ros&linux自学笔记

1,ros工作空间的文件构成:

其中src下可以放多个功能包。为了方便管理可以在src下新建文件夹,再在文件夹下建多个功能包。

注意功能包的名字不要与ros自带的系统功能包重复。如果想删除功能包则需要用特定的命令来删除: sudo apt-get purge ros-indigo-**

2,launch文件一般放在功能包下,可以用include来条用其他功能包中的launch文件。

launch中arg 标签可以定义接收 launch的参数
launch中rosparm 可以定义 ros参数,保存到参数服务器中

$(eval xxx)可以执行python代码,让launch有灵活性

例如:表达式成立则运行XXX

<group if="$(eval 'true' if arg('input')=='run' else 'false')">
....xxx....
</group>

<remap from="scan" to="$(arg scan_topic)"/>:将名称为“scan"的接口重新映射成launch参数名为“scan_topic”的参数值

3,gmapping功能时,

将雷达名称修改成自己的实际名称;

odom_frame修改成自己的实际项目中用到的名称;

4,tf变换

ros中tf1升级为tf2,

from tf.broadcaster import TransformBroadcaster。。。。ros1
from tf2_ros import TransformBroadcaster       。。。。ros2

tf2引入了静态广播器,可以直接在launch中定义。

例如:

<node pkg="tf2_ros" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent link1" />

linux系统操作技巧:

为安装好的程序设定桌面和系统应用快捷方式

在/usr/share/applications目录下创建自己的.desktop文件。并写入如下代码:

[Desktop Entry]
Name=pycharm
Exec=/home/pcname/PY/pycharm/bin/pycharm.sh
Icon=/home/pcname/PY/pycharm/bin/pycharm.png
Type=Application

其中Exec为安装应用程序目录

其中Exec为对应的图表目录

保存推出即可在系统应用中看到自己新安装的应用程序了。

5,navigation导航功能

以turtlebot3的仿真程序为例,

先安装turtlebot3(如没有安装gazebo,和navigation,则需先行安装):

sudo apt install ros-noetic-turtlebot3

sudo apt install ros-noetic-turtlebot3-simulations

sudo apt install ros-noetic-navigation

注意按照自己安装的ros版本来对应安装,此处以noetic的为例;

然后便可以启动仿真测试了。(具体参照:ROS2入门教程——31. 在Gazebo仿真环境中实现自主导航 - 古月居)此处不再赘述;

5.1navigation导航功能包主要launch介绍:

如上图中。

turtlebot3_navigation.launch可以启动与导航相关的所有功能包 ;

amcl.launch是一个包含自适应蒙特卡罗定位(AMCL)的各种参数设置的(上线参数);

move_base.launch是统筹运动规划参数设置的(加载各种配置 参数的launch);

5.2navigation导航功能包主要参数配置文件介绍:

各参数配置文件如下图: 

base_local_planner_params.yaml

因为turtlebot3已将dwa_local_planner用作base_local_planner的设置值,因此在
此不使用。这是因为已经在move_base节点中更改了参数设置,如下所示:

<param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" />

costmap_common_params_burger.yaml是   Turtlebot3 Burger机器人的参数设定文件;

costmap_common_params_waffle.yaml是   Turtlebot3 waffle机器人的参数设定文件;

costmap_common_params_waffle_pi.yaml是   Turtlebot3 waffle_pi机器人的参数设定文件;

机器人的形状尺寸和安全距离都在上述中设定;


dwa_local_planner_params_burger.yaml是最终将移动速度命令传给机器人的功能包参数;

dwa_local_planner_params_waffle.yaml是最终将移动速度命令传给机器人的功能包参数;

dwa_local_planner_params_waffle_pi.yaml是最终将移动速度命令传给机器人的功能包参数;

机器人机动速度,包括最大最小运行速度/最大最小加速度等都在上述3个文件中设定;

global_costmap_params.yaml是   全局地图参数设定文件;

# 设置机器人底座框架/发布和更新周期等参数;

local_costmap_params.yaml是   局部地图参数设定文件;

# 机器人底座框架设置/发布和更新周期局部尺寸大小分辨率等参数设定;

move_base_params.yaml--统筹运动规划的move_base的参数设置文件;

# 向机器人底座发送速度命令的控制周期( Hz )和最小定位完成等参数设定;

 5.3障碍距离与costmap值的关系

在导航中,基于固定地图(static map/用作占用区域(occupied area)/自由区域(free area)
和未知区域(unknown area)四种因素,计算障碍物区域、预计会和障碍物碰撞的区域以及机
器人可移动区域,这被称为成本地图(costmap);

障碍距离与costmap值的关系如下图:

000:机器人可以自由移动的free area(自由区域)
001~127:碰撞概率低的区域
128~252:碰撞概率高的区域
253~254:碰撞区域
255:机器人不能移动的占用区域(occupied area)

### ROS2 Costmap配置与使用教程 #### 1. 安装必要的依赖项 为了在ROS2环境中设置和运行Costmap,需安装`navigation2`套件以及相关组件。可以通过以下命令完成: ```bash sudo apt-get install ros-<ros2-distro>-navigation2 ros-<ros2-distro>-nav2-bringup ``` 这的`<ros2-distro>`应替换为当前使用的ROS2发行版名称。 #### 2. 创建自定义导航参数文件 创建一个新的YAML文件来指定Costmap的具体参数。此文件通常位于工作空间内的某个包下,并命名为类似`costmap_params.yaml`的形式。下面是一个简单的例子[^3]: ```yaml obstacle_layer: enabled: true observation_sources: scan scan: topic: /scan marking: true clearing: true static_map: global_frame: map inflation_layer: cost_scaling_factor: 10.0 inflation_radius: 0.55 ``` 上述配置指定了障碍物检测所依据的数据源(激光雷达扫描),同时也设置了膨胀系数及半径以确保安全距离。 #### 3. 修改启动文件以加载新配置 编辑现有的或新建一个`.launch.py`脚本,在其中引入之前准备好的参数文件。这一步骤对于确保所有设置都能被正确应用至关重要。例如: ```python from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( package='nav2_bringup', executable='bringup_launch.py', parameters=[ {'use_sim_time': True}, './path/to/your/costmap_params.yaml' ] ) ]) ``` 这段Python代码片段展示了如何通过`Node()`函数传递路径至自定义的Costmap参数文件。 #### 4. 启动并测试配置效果 最后执行如下指令开启整个导航栈,观察终端输出确认一切正常运作: ```bash ros2 launch your_package_name bringup.launch.py ``` 此时应该能够看到机器人已经开始基于设定的成本映射进行自主移动规划了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值