在ubuntu22.04中借助docker实现安装、调试ros1.0

一.安装docker

参考:https://www.cnblogs.com/cqpanda/p/16247919.html

使用安装方法1直接安装,没出问题,我就继续了。出问题按方法2安装吧。

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

二.docker中安装ros1.0(noetic)

1. 拉取ros1.0镜像

参考:docker容器中安装ROS1/ROS2(不用配任何环境,10分钟搞定)_docker ros2-CSDN博客

docker pull osrf/ros:noetic-desktop-full

 这时候可以编写dockerfile并执行,否则用原始镜像生成的容器缺乏基本的linux软件。

 由于我编写的dockerfile怎么也执行不成功,所以使用了原始镜像,通过docker cp命令  把/etc/apt/sources.list源拷贝到容器内,实现基本软件的安装。

2. 安装ros1.0

参考:docker容器中安装ROS1/ROS2(不用配任何环境,10分钟搞定)_docker ros2-CSDN博客

生成新容器,主要注意映射关系与x11:

docker run -it  \--name your_name \--env="DISPLAY" \--env="QT_X11_NO_MITSHM=1" \--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \osrf/ros:noetic-desktop-full \rqt

四.测试rviz是否可显示

先运行:

xhost +
source /opt/ros/noetic/setup.bash

roscore,然后运行viz即可开启。

五.部署开发环境---clion连接docker

1. 安装ssh服务

sudo apt install openssh-server

2.启动服务

sudo service ssh start

可以使用远程连接的Docker利用镜像产生新的容器。但我这里已经先生成容器了,所以使用remote_host来连接已有的容器

设置宿主机与容器内文件夹映射:

六.编译,调试代码

这里记录以下ttb库与g++9或g++10不兼容的一个bug,因为容器是g++9,把g++9升级到g++11就能解决。

parallel_backend_tbb.h:70:10: error: 'tbb::task' has not been declared

把ros的环境变量配置到clion中去:

查看ros的环境变量,容器终端内执行:

ros_env="AMENT_PREFIX_PATH CMAKE_PREFIX_PATH COLCON_PREFIX_PATH PKG_CONFIG_PATH PYTHONPATH LD_LIBRARY_PATH PATH ROS_DISTRO ROS_PYTHON_VERSION ROS_LOCALHOST_ONLY ROS_VERSION"
env_string=""
for e in ${ros_env}; doenv_string+="$e=${!e};"
done
echo "$env_string"

生成:

AMENT_PREFIX_PATH=;CMAKE_PREFIX_PATH=/opt/ros/noetic;COLCON_PREFIX_PATH=;PKG_CONFIG_PATH=/opt/ros/noetic/lib/pkgconfig;PYTHONPATH=/opt/ros/noetic/lib/python3/dist-packages;LD_LIBRARY_PATH=/opt/ros/noetic/lib;PATH=/opt/ros/noetic/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;ROS_DISTRO=noetic;ROS_PYTHON_VERSION=3;ROS_LOCALHOST_ONLY=;ROS_VERSION=1;

把这段生成的环境变量防到clion的环境命令中去:

即可开始编译,调试了。

七.遗留问题

在clion中执行可视化节点的时候,会报错:

但,如果在容器终端内启动节点,则正常打开可视化页面。看起来xhost +并未对clion生效。欢迎留言帮助解决。

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

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

相关文章

ping: connect: Resource temporarily unavailable

问题 主机ping自己或者其他的设备报错如下 ping: connect: Resource temporarily unavailable 看了下网络上的其他说法,大多说是下面的两个限制 1.网络连接队列的大小 2.系统级别的最大文件描述符数量 根因分析 调整连接队列和最大文件描述符数,问题仍…

BUUCTF-Real-[PHP]XXE

目录 1、原理 2、XXE漏洞产生的原因 3、开始复现 paylaod 复现 4、flag 1、原理 XML数据在传输过程中,攻击者强制XML解析器去访问攻击者指定的资源内容(本地/远程),外部实体声明关键字SYSTEM会令XML解析器读取数据&#xf…

基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道

基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道 相关链接 OFDM中的帧(frame)、符号(symbol)、子载波(subcarriers)、导频…

RK3588平台开发系列讲解(视频篇)RKMedia的RGA模块

文章目录 一、RGA模块功能概述二、RGA模块支持的图像格式三、RGA模块的通道数四、RGA模块API调用流程五、RGA模块实现图像裁剪六、RGA模块实现图像旋转七、RGA模块实现图像格式转换(色彩空间转换)八、RGA模块实现图像缩放沉淀、分享、成长,让自己和他人都能有所收获!😄 �…

VUE3+elementPlus 之 Form表单校验器 之 字符长度校验

需求:校验字符长度,超过后仍可输入,error提示录入字符数与限制字符数 校验字符长度: /*** 检验文字输入区的长度* param {*} rule 输入框的rule 对象,field:字段名称* param {*} value …

【数据结构】(分治策略)中位数的查询和最接近点对问题

中位数查询: 寻找一组字符串中第k小的数,返回其值和下标。 不可以有重复值(在缩小规模的时候,会导致程序死循环) 相对位置的转换体现了分治策略的思想。> 划分函数 int partition(int *nums,int left, int rig…

报错 Cannot read properties of undefined(reading‘addEventListener‘)如何解决

我在制作项目中遇到了一个问题,给大家分享一下,如下图: 问题:这是我给一个input输入框绑定的监听事件出现的报错 翻译:无法读取未定义的属性(读取 addEventListener ) 错误原因:js中操作的dom元素的函数方…

Spring Boot 中操作 Bean 的生命周期

1.InitializingBean和DisposableBean InitializingBean接口提供了afterPropertiesSet方法,用于在bean的属性设置好之后调用; DisposableBean接口提供了destroy方法,用于在bean销毁之后调用; public class TestComponent implem…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DatePicker组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DatePicker组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、DatePicker组件 日期选择器组件,用于根据指定日期范围创建日期滑…

SpringBoot 使用WebSocket功能

实现步骤&#xff1a; 1.导入WebSocket坐标。 在pom.xml中增加依赖项&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>2.编写WebSocket配…

【Web前端实操21】商城官网_白色导航

今日份实现白色导航栏部分&#xff0c;也就是第三部分&#xff0c;效果如图中划线所示&#xff1a; 本次实现代码如之前的全局样式不再赘述&#xff0c;如有需要可以去我博客的Web前端实操19或者20自行查看。 本次主要更新mi.css和index.htm。 实现导航栏所需要的CSS样…

【云原生】docker安全与https加密的超文本传输协议CA证书生成

目录 一、docker安全 二、http与https的区别 三、为什么要使用 SSL 证书&#xff1f; 四、https证书认证的过程 https单向认证的访问流程 https双向认证的访问流程 五、如何获取证书&#xff1f; 六、实操获取证书并验证 1、通过阿里云获取证书 2、通过mkcert获取证书…