Ros1

源配置

/etc/apt/sources.list

deb http://packages.aicrobo.com/ros/ubuntu/ focal main

#deb http://packages.aicrobo.com/aicrobo/ focal main
#deb http://packages.aicrobo.com/aicrobo focal main
#deb http://packages.aicrobo.com/aicrobo focal main
#deb http://th.archive.ubuntu.com/ubuntu focal main

# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

/etc/apt/sources.list.d/ros-latest.list

deb http://packages.ros.org/ros/ubuntu focal main
deb https://repo.huaweicloud.com/ros/ubuntu focal main

配置完源后安装公钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
udo apt update
#如果现现gpg: 从公钥服务器接收失败:Server indicated a failure
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv F42ED6FBAB17C654
sudo apt update

安装ros noetic

sudo apt install ros-noetic-desktop-full
sudo aptitude install ros-noetic-desktop-full    #如果以上安装命令出错可使用些命令安装修复

安装签名

wget -O https://packages.spfrobotics.com/spfrobotics/pool/main/a/aicrobo-keyring/aicrobo-keyring_2021``.07.16.1~20.04.0_all.deb
sudo dpkg -i aicrobo-keyring_2021.07.16.1~20.04.0_all.deb  #添加签名证书链`

rosdep配置源

需要配置DNS:172.16.1.1才能连上公司的源。

/etc/ros/rosdep/sources.list.d/20-default.list

yaml https://git.spfbot.com/projects/AICROS/repos/aic_rosdep_rules/raw/noetic.yaml

Ros日志分为五个级别

RCLCPP_DEBUG(this->get_logger(), "我是DEBUG级别的日志,我被打印出来了!");
RCLCPP_INFO(this->get_logger(), "我是INFO级别的日志,我被打印出来了!");
RCLCPP_WARN(this->get_logger(), "我是WARN级别的日志,我被打印出来了!");
RCLCPP_ERROR(this->get_logger(), "我是ERROR级别的日志,我被打印出来了!");
RCLCPP_FATAL(this->get_logger(), "我是FATAL级别的日志,我被打印出来了!");

cartographere安装

编译安装过程

(14条消息) 【安装学习】安装Cartographer ROS(noetic)_ros-noetic-cartographer_Howe_xixi的博客-CSDN博客
需要运行roscore才可以启动cartographere

解决“cartographer: [libabsl-dev] defined as “not available“ for OS version [bionic]”问题

需要删除或者注释在cartographer 包下package.xml文件里的(libabsl-dev) 。并且在src/cartographer/scripts/install_abseil.sh文件目录下运行install_abseil.sh这个sh文件来下载abseil安装。这样应该就能解决这个报错问题。

编译时报错ninij -j4 -l4错误

原因由于ceres版本不对,按下面地址下载编译安装重新编译
(14条消息) SLAM疑难篇一:ceres安装和编译报错——实践高翔SLAM十四讲_ceres报错_j_shuttworth的博客-CSDN博客
编译ceres按照官方流程Installation — Ceres Solver (ceres-solver.org)

安装扩展包

costmap_2d

sudo apt-get install ros-noetic-costmap-2d

aicrobo

package - -
aic_msgs ros—msgs通用协议
aic_auto_dock 入库装料
aic_dock_param
aic_field_detector
aic_global_planner 全局路径规划
aic_laser_feature_applicatior 雷达
aic_laser_filter 雷达过虑
aic_laser_merge
aic_local_planner 本地路径规划
aic_move_avoid 移动避障
aic_move_base 移动控制 由第三方库改
aic_mr_nav
aic_nav_core 自动导航
aic_obstacle_detect
aic_odom_trajetory
aic_rosdep_rules
aicrobot_mr 机器人启动项
yocs_cmd_vel_mux
yocs_velocity_smoother
aic_laser_verify
cartographer 建图
cartographer_ros_msgs
cartographer_ros
cartographer_rviz
ceres-solver 第三方算法库
ar_track_alvar 二维码 ros开源的Ar跟踪库ar_track_alvar - ROS Wiki
ar_track_locate 二维码定位识别
ros-noetic-mqtt-client mqtt的ros客户端

aicrobo项目配置Apps

注意:需要更新到ubuntu22的boost1.74的库。

安装扩展

  1. 安装catkin tools
    官网安装地址:Installing catkin_tools — catkin_tools 0.0.0 documentation (catkin-tools.readthedocs.io)

No package ‘orocos-bfl‘ found

Ubuntu 20.04 编译报错 No package ‘orocos-bfl‘ found 的解决方法_wongHome的博客-CSDN博客

sudo apt-get install liborocos-bfl-dev

teb_local_planner插件

#安装teb_local_planner
sudo apt-get install ros-noetic-teb-local-planner
#costmap_converter插件
sudo apt-get install ros-noetic-costmap-converter
#mbf-costmap-core
sudo apt-get install ros-noetic-mbf-costmap-core
#mbf-msgs
sudo apt-get install ros-noetic-mbf-msgs

使用catkin_make编译独立包可使用以下命令

catkin_make -DCATKIN_WHITELIST_PACKAGES="teb_local_planner"
#(src文件夹下面你下载的teb功能包文件夹名字)

安装rviz

 sudo apt-get install ros-noetic-rviz

Ros

command

rosnode

rosservice

roslaunch

rostopic

TF

tf::Vector3

它的别一个别名:

typedef tf::Vector3 Point;

tf::Vector3(float x, float y, float z)

tf::Transform

它的别一个别名:psoe

typedef tf::Transform Pose;

tf::Quaternion

tf::poseMsgToTF

tf::poseTFToMsg

tf::quaternionMsgToTF

tf::getYaw

launch

<launch>
  <!--定义一个machine主机-->
  <machine name="local_alt" address="localhost" default="true" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" />
  <!-- 启动节点listener,命名为listener-1 -->
  <node name="listener-1" pkg="rospy_tutorials" type="listener" />
  <!-- 启动节点listener,命名为listener-2,传入参数 -->
  <node name="listener-2" pkg="rospy_tutorials" type="listener" args="-foo arg2" />
  <!-- 启动节点listener,命名为listener-3,节点被kill之后自动重启 -->
  <node name="listener-3" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!--在命名空间wg1中启动listener节点命名为listener-wg1-->
  <node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!--在命名空间wg2下启动一个group-->
  <group ns="wg2">
    <!-- 映射主题chatter->hello,生效范围为group范围内 -->
    <remap from="chatter" to="hello"/>
    <node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true"/>
    <node pkg="rospy_tutorials" type="talker" name="talker">
      <!-- 设置一个私有变量的值 -->
      <param name="talker_1_param" value="a value" />
      <!-- 映射主题chatter->hello-1,生效范围为node范围内 -->
      <remap from="chatter" to="hello-1"/>
      <!-- 设置环境变量,作用范围为node范围内 -->
      <env name="ENV_EXAMPLE" value="some value" />
    </node>
  </group>
</launch>

launch

所有的launch文件都由<launch>开头,由</launch>结尾,所有的描述标签都要写在<launch></launch>之间。通过roslaunch启动launch文件

roslaunch package_name demo.launch

node

  • name :为节点指派名称,这将会覆盖掉ros::init()定义的node_name
  • pkg:节点所在的包名
  • type:执行文件的名称如果是用Python编写的就填写xxx.py,如果是cpp就写编译生成的可执行文件名
  • output:终端输出转储在当前的控制台上,而不是在日志文件中

rosparam

rosparam标签允许从YAML文件中一次性导入大量参数。
使用方法如下:

<rosparam command="load" file=""$(find pkg-name)/path/name.yaml" />

env

env通常用于设置环境变量,仅用于标签<launch><node><include><machine>范围内,且只有环境变量定义之后的节点生效。使用方法示例如下:

<env name="dome_env" value="demo_env" />

machine

machine通常用于多主机之间启动节点,可以在本机上启动同一局域网下其他主机上的节点,具体用法示例如下:

<launch>
<!-- 定义一个machine主机并加载环境变量 -->
	<machine name="foo" address="foo-address" env-loader="/opt/ros/fuerte/env.sh" user="someone" />
	<!-- 启动主机machine上的一个节点 -->
	<node machine="foo" name="footalker" pkg="test_ros" type="talker.py" />

include

该标签可以导入另一个roslaunch XML文件到当前文件。

  • file:指明我们想要包含进来的文件
  • ns:相对NAEM_SPACE命名空间导入文件

remap

remap标签顾名思义重映射,ROS支持topic的重映射,remap标签里包含一个original-name和一个new-name,及原名称和新名称。
比如现在你拿到一个节点,这个节点订阅了"/chatter"topic,然而你自己写的节点只能发布到"/demo/chatter"topic,由于这两个topic的消息类型是一致的,你想让这两个节点进行通讯,那么可以在launch文件中这样写:

<remap from="chatter" to="demo/chatter" />

param

param标签的作用相当于命令行中的rosparam set
例如现在在参数服务器中添加一个名为demo_param,值为666的参数

<param name="demo_param" type="int" value="666" />

group

group标签可以将若干个节点同时划分进某个工作空间。

<group ns="demo_1">
	<node name="demo_1" pkg="demo_1" type="demo_pub_1" output="screen" />
	<node name="demo_2" pkg="demo_2" type="demo_pub_2" output="screen" />
</group>
<group ns="demo_2">
	<node name="demo_3" pkg="demo_3" type="demo_pub_3" output="screen" />
	<node name="demo_4" pkg="demo_4" type="demo_pub_4" output="screen" />
</group>

group标签还可以做到对node的批量管理。比如我可以同时终止在同一个group中的节点。

<group if="1-or-0">
......
</group>
<group unless="1-or-0">
......
</group>

第一种情况,当if属性的值为0的时候将会忽略掉之间的标签。
第二种恰好相反,当if属性的值为1的时候将会忽略掉之间的标签。
但是我们通常不会直接用1或0来定义if标签。因为这样不够灵活。
通常会搭配$(arg arg_name)来使用。

test

test标签与node的作用一样,其用于启动测试节点,使用方法示例如下:

<test test-name="test_1_2" pkg="mypkg" type="test_1_2.py" time-limit="10.0" args=“--test1 --test2" />

arg

arg标签用来在launch文件中定义参数,arg和param在ROS里有根本性的区别,就像局部变量和全局变量的区别一样。arg不储存在参数服务器中,不能提供给节点使用,只能在launch文件中使用。param则是储存在参数服务器中,可以被节点使用。

<arg name="demo" />

以上就是简单地声明了一个参数,名叫demo,但是声明不等于定义,我们需要给他赋值,在赋值之后参数才能够发挥作用。

<arg name="demo" value="666"/>
<arg name="demo" default="666"/>

以上是两种简单的赋值方法,两者的区别是使用后者赋值的参数可以在命令行中像下面这样被修改,前者则不行。

roslaunch demo demo.launch demo:=6666

arg还有更加高级,也更加灵活的用法:

$(arg arg_name)

当$(arg arg_name)出现在launch文件任意位置时,将会自动替代为所给参数的值。

C++

setParam();

python

posted @   alvinlyb  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示