使用Docker将ros1自定义消息通过rosjava_bootstrap生成jar包

文章目录

  • 预准备环境
    • rosjava_bootstrap
      • 坏消息
      • 好消息
  • 环境安装
    • docker安装
    • rosjava_bootstrap仓库
    • rosjava_center仓库
    • 修改rosjava_bootstrap代码
    • 拉取docker镜像
    • 放置自己的自定义消息
  • 启动docker编译

预准备环境

rosjava_bootstrap

rosjava_bootstrap是将自定义的ROS消息生成java代码的插件,目前官方只维护到kinetic版本,也就是说我们需要将这个ROS环境设置为kinetic版本。

坏消息

  • 需要安装一个Ubuntu16.04版本的系统
  • rosjava_bootstrap的maven仓库已经失效了,尽管你搭建了kinetic版本的ROS环境,100%无法编译出相应的jar包

好消息

  • ROS官方提供的相应的docker镜像,我在上面安装了rosjava
  • rosjava_bootstrap的maven仓库我已经修改了,可以改成自定义的URL

环境安装

docker安装

首先安装docker,我用的是window+ WSL,所以我下载的是docker-desktop版本

docker下载地址

rosjava_bootstrap仓库

我修改过的仓库github链接:https://github.com/ceoifung/rosjava_bootstrap

# 新建一个工作空间
mkdir ~/catkin_ws/src -p
cd ~/catkin_ws/src
# clone仓库
git clone https://github.com/ceoifung/rosjava_bootstrap

rosjava_center仓库

这个仓库是在rosjava_bootstrap编译出jar包所需的各种依赖

  • 预览地址:https://ceoifung.github.io/rosjava_center/

  • 仓库地址:https://github.com/ceoifung/rosjava_center

首先把仓库下载下来

git clone https://github.com/ceoifung/rosjava_center

仓库内容如下:
在这里插入图片描述
然后在下载的rosjava_center目录启动一个http目录浏览服务,如果装了nodejs的,可以安装一个anywhere。没有的话,可以IIS或者NGINX或者别的什么,只要能作为http目录浏览服务器,能够通过网络下载上面的内容就行。以下是我用window IIS启动的一个目录浏览服务
在这里插入图片描述

修改rosjava_bootstrap代码

在rosjava_bootstrap代码中,我默认将所有的maven地址设置成了本地的http文件目录服务器的地址

http://192.168.3.109/rosjava

全局搜索仓库,将上面的地址修改为rosjava_center的目录浏览服务地址,比如我上面的地址是
http://192.168.3.109/rosjava,那我就不用改了

拉取docker镜像

默认已经集成好了一个rosjava的docker镜像。可以通过如下命令,拉取我制作的镜像

docker pull ceoifung/rosjava-ceoifung

放置自己的自定义消息

上面步骤完成之后,可以将自己的自定义ROS消息,放到catkin_ws/src目录中

rosjava_bootstrap也需要放到catkin_ws工作空间,注意不要漏掉了

启动docker编译

通过如下命令启动docker

# 启动docker,挂载catkin_ws目录到docker的home目录下
docker run --rm -it -v ~/catkin_ws:/home/catkin_ws ceoifung/rosjava-ceoifung:latest /bin/bash# 进入镜像之后
cd /home/catkin_ws
catkin_make
# 编译成功之后,就可以在devel目录下找到编译出来的jar文件了

编译成功之后,就可以在devel目录下找到编译出来的jar文件了

如果编译失败,检测一下自己的rosjava_center 目录浏览服务是否有效,每个文件是否可以通过http下载下来

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Python实战进阶》No 7: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战

第7集: 一个AI大模型聊天室的构建-基于WebSocket 实时通信开发实战 在现代 Web 开发中,实时通信已经成为许多应用的核心需求。无论是聊天应用、股票行情推送,还是多人协作工具,WebSocket 都是实现高效实时通信的最佳选择之一。本…

轮式机器人在复杂地形中如何选择合适的全局路径规划算法?

已思考完成 收起 嗯,用户问的是轮式机器人在复杂地形中如何选择合适的全局路径规划算法。首先,我需要理解复杂地形可能带来的挑战,比如崎岖的路面、动态障碍物、非结构化环境等等。轮式机器人在这里的运动控制需要考虑地形通过性、稳定性&…

Mysql100道高频面试题

一、基础概念 1. 什么是数据库?DBMS的作用是什么? 数据库:是按照数据结构来组织、存储和管理数据的仓库。它允许用户高效地访问和管理数据。 DBMS(数据库管理系统):是一种软件系统,用于创建和…

React底层原理详解

React中Element&Fiber对象、WorkInProgress双缓存、Reconcile&Render&Commit、第一次挂载过程详解 在面试中介绍React底层原理时,需遵循逻辑清晰、层次分明、重点突出的原则,结合技术深度与实际应用场景。以下是结构化回答模板:…

qt5的中文乱码问题,QString、QStringLiteral 为 UTF-16 编码

qt5的中文乱码问题一直没有很明确的处理方案。 今天处理进程间通信时,也遇到了qt5乱码问题,一边是设置的GBK,一边设置的是UTF8,单向通信约定采用UTF8。 发送端保证发的是UTF8字符串,因为UTF8在网络数据包中没有字节序…

解锁浏览器内置API,助力跨标签/跨页面数据通信

1 BrodcastChanner 概念 BroadcastChannel接口表示给定源的任何浏览上下文都可以订阅的命名频道。它允许同源的不同浏览器窗口、标签页、frame 或者 iframe 下的不同文档之间相互通信。消息通过message事件进行广播,该事件在侦听该频道的所有BroadcastChannel对象上…

Mysql-如何理解事务?

一、事务是什么东西 有些场景中,某个操作需要多个sql配合完成: 例如: 李四这个月剩下的前不够交房租了,找张三借1000元急用: (1)给张三的账户余额 减去1000元 updata 账户表 set money money -…

《deepseek FlashMLA :高效的 MLA 解码内核》:此文为AI自动翻译

FlashMLA GitHub - deepseek-ai/FlashMLA FlashMLA 是适用于 Hopper GPU 的高效 MLA 解码内核,针对可变长度序列服务进行了优化。 当前发布: BF16、FP16块大小为 64 的分页 kvcache 快速开始 安装 python setup.py install 基准 python tests/test_fl…

Windows对比MacOS

Windows对比MacOS 文章目录 Windows对比MacOS1-环境变量1-Windows添加环境变量示例步骤 1:打开环境变量设置窗口步骤 2:添加系统环境变量 2-Mac 系统添加环境变量示例步骤 1:打开终端步骤 2:编辑环境变量配置文件步骤 3&#xff1…

蓝桥杯 之 填空题-位运算与循环

文章目录 循环握手问题门牌制作-循环小球反弹幸运数艺术与篮球跑步 位运算3个1美丽的2024 位运算 可以关注这个Lowbit(x) 如何判断最低位是否是1? num&1 1就说明num最低位是1 循环 循环 握手问题 握手问题 思路分析: 可以直接计算出来&#xff…

Java进阶——反射机制超全详解

反射能在运行时动态操作类和对象的能力,极大地增强了程序的灵活性。但是反射的使用也伴随着性能开销和安全风险。本文将由博主带你一起深入探讨 Java 反射的核心概念、关键类和方法,以及在日常开发中的应用场景。 本文目录 一、反射的核心概念1. 运行时类…

OAK相机的抗震性测试

在工业环境中,双目视觉相机必须具备与工作环境同等的坚固性。鉴于部分客户会将我们的相机应用于恶劣环境(例如安装在重型机械上),我们依据EN 60068-2-6:2008标准对相机进行了振动耐受性测试。 测试涉及的相机型号包括&#xff1a…

Express MVC

1. 安装依赖 npm init -y npm install express npm install --save-dev typescript ts-node ejs types/node types/express tsc --init 2. 项目目录结构如下,没有的手动创建 /my-app/src/modelsuser.ts/viewsindex.ejsuserList.ejs/controllersuserController.ts…

apache-maven-3.2.1

MAVEN_HOME D:\apache-maven-3.2.1 PATH D:\apache-maven-3.2.1\bin cmd mvn -v <localRepository>d:\localRepository</localRepository> setting.xml <?xml version"1.0" encoding"UTF-8"?><!-- Licensed to the Apache Soft…

合并两个有序链表:递归与迭代的实现分析

合并两个有序链表&#xff1a;递归与迭代的实现分析 在算法与数据结构的世界里&#xff0c;链表作为一种基本的数据结构&#xff0c;经常被用来解决各种问题。特别是对于有序链表的合并&#xff0c;既是经典面试题&#xff0c;也是提高编程能力的重要练习之一。合并两个有序链…

破解密码防线:渗透测试中的密码攻击手法汇总

密码是网络安全中的一道重要防线&#xff0c;然而&#xff0c;若密码策略不严密&#xff0c;往往会为攻击者提供可乘之机。本文将简要介绍渗透测试中关于密码的几种常见攻击思路和手法。 1. 确认使用默认及常见的账号密码 在渗透测试的初期&#xff0c;攻击者通常会尝试使用系…

CSS Selectors

当然&#xff0c;理解纯CSS选择器&#xff08;CSS Selectors&#xff09;对于进行UI自动化测试非常重要。CSS选择器允许您通过元素的属性、层级关系、类名、ID等来精准定位页面上的元素。下面我将详细讲解CSS选择器的常见用法&#xff0c;并结合您的需求提供具体的示例。 1. 基…

【java】@Transactional导致@DS注解切换数据源失效

最近业务中出现了多商户多租户的逻辑&#xff0c;所以需要分库&#xff0c;项目框架使用了mybatisplus所以我们自然而然的选择了同是baomidou开发的dynamic.datasource来实现多数据源的切换。在使用初期程序运行都很好&#xff0c;但之后发现在调用com.baomidou.mybatisplus.ex…

浅入浅出Selenium DevTools

前言 在自动化测试领域&#xff0c;Selenium一直是主流工具之一。随着前端技术的不断发展&#xff0c;浏览器的功能也在不断丰富。 Selenium 3版本前&#xff0c;一套通用的采集流程如上图所示&#xff1a; 打开Charles&#xff0c;设置Session自动导出频次及导出路径Seleniu…

04 路由表的IP分组传输过程

目录 1、路由表的核心结构 2、IP分组传输过程和数据包转发过程 2.1、IP分组传输过程 2.2、数据包转发过程 2.3、IP分组传输过程和数据包转发的区别 3、数据包的变化 3.1、拓扑结构 3.2、传输过程详解&#xff08;主机A → 主机B&#xff09; 3.2.1、主机A发送数据 3.2…