用如下地圖複習一下,ROS1主要内容。

分為如下:
- 基礎部分
- 指令部分
- 圖形化工具部分
- 功能包使用部分
- 功能包編譯部分
- 導航部分
- 區域覆寫部分
1. 基礎部分
參考一鍵配置:
ROS1雲課→30導航仿真示範_zhangrelay的部落格-CSDN部落格
ROS1雲課→31歡樂卷假期_zhangrelay的部落格-CSDN部落格
echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc
sudo apt-key add ros.asc
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt update
git clone https://gitcode.net/ZhangRelay/ros_book.git
sudo apt install ros-kinetic-turtlebot-simulator -y
roslaunch turtlebot_stdr turtlebot_in_stdr.launch
建立oztf.sh,然後将上述内容複制到其中。
執行./oztf.sh,完成基礎配置。
更換地圖并測試:
全部配置好後,效果如下:
STDR
rviz:
2. 指令部分
複習rostopic,rosnode等指令:
shiyanlou:oztf_ws/ $ rostopic list [10:29:13]
/amcl/parameter_descriptions
/amcl/parameter_updates
/amcl_pose
/cmd_vel_mux/active
/cmd_vel_mux/input/navi
/cmd_vel_mux/input/safety_controller
/cmd_vel_mux/input/switch
/cmd_vel_mux/input/teleop
/cmd_vel_mux/parameter_descriptions
/cmd_vel_mux/parameter_updates
/diagnostics
/diagnostics_agg
/diagnostics_toplevel_state
/initialpose
/joint_states
/kobuki_safety_controller/disable
/kobuki_safety_controller/enable
/kobuki_safety_controller/reset
/map
/map_metadata
/map_updates
/mobile_base/commands/velocity
/mobile_base/events/bumper
/mobile_base/events/cliff
/mobile_base/events/wheel_drop
/mobile_base/sensors/bumper_pointcloud
/mobile_base_nodelet_manager/bond
/move_base/DWAPlannerROS/cost_cloud
/move_base/DWAPlannerROS/global_plan
/move_base/DWAPlannerROS/local_plan
/move_base/DWAPlannerROS/parameter_descriptions
/move_base/DWAPlannerROS/parameter_updates
/move_base/DWAPlannerROS/trajectory_cloud
/move_base/NavfnROS/plan
/move_base/cancel
/move_base/current_goal
/move_base/feedback
/move_base/global_costmap/costmap
/move_base/global_costmap/costmap_updates
/move_base/global_costmap/footprint
/move_base/global_costmap/inflation_layer/parameter_descriptions
/move_base/global_costmap/inflation_layer/parameter_updates
/move_base/global_costmap/obstacle_layer/clearing_endpoints
/move_base/global_costmap/obstacle_layer/parameter_descriptions
/move_base/global_costmap/obstacle_layer/parameter_updates
/move_base/global_costmap/parameter_descriptions
/move_base/global_costmap/parameter_updates
/move_base/global_costmap/static_layer/parameter_descriptions
/move_base/global_costmap/static_layer/parameter_updates
/move_base/goal
/move_base/local_costmap/costmap
/move_base/local_costmap/costmap_updates
/move_base/local_costmap/footprint
/move_base/local_costmap/inflation_layer/parameter_descriptions
/move_base/local_costmap/inflation_layer/parameter_updates
/move_base/local_costmap/obstacle_layer/clearing_endpoints
/move_base/local_costmap/obstacle_layer/parameter_descriptions
/move_base/local_costmap/obstacle_layer/parameter_updates
/move_base/local_costmap/parameter_descriptions
/move_base/local_costmap/parameter_updates
/move_base/parameter_descriptions
/move_base/parameter_updates
/move_base/recovery_status
/move_base/result
/move_base/status
/move_base_simple/goal
/navigation_velocity_smoother/parameter_descriptions
/navigation_velocity_smoother/parameter_updates
/navigation_velocity_smoother/raw_cmd_vel
/odom
/particlecloud
/robot0/cmd_vel
/robot0/laser_0
/robot0/odom
/rosout
/rosout_agg
/stdr_server/active_robots
/stdr_server/co2_sources_list
/stdr_server/delete_robot/cancel
/stdr_server/delete_robot/feedback
/stdr_server/delete_robot/goal
/stdr_server/delete_robot/result
/stdr_server/delete_robot/status
/stdr_server/register_robot/cancel
/stdr_server/register_robot/feedback
/stdr_server/register_robot/goal
/stdr_server/register_robot/result
/stdr_server/register_robot/status
/stdr_server/rfid_list
/stdr_server/sound_sources_list
/stdr_server/sources_visualization_markers
/stdr_server/spawn_robot/cancel
/stdr_server/spawn_robot/feedback
/stdr_server/spawn_robot/goal
/stdr_server/spawn_robot/result
/stdr_server/spawn_robot/status
/stdr_server/thermal_sources_list
/tf
/tf_static
shiyanlou:oztf_ws/ $
3.圖形化工具部分
使用rqt工具讓機器人原地旋轉:
<arg name="initial_pose_x" default="1.0"/>
<arg name="initial_pose_y" default="1.0"/>
可以使用圖形化工具遙控機器人到任意位置。
位置:
使用rostopic echo 檢視:
pose:
pose:
position:
x: 0.72986361147
y: 2.60749052303
z: 0.0
orientation:
x: 0.0
y: -0.0
z: -0.76345417549
w: -0.645861999135
資料保持一緻。
4.功能包使用部分
安裝官方功能包使用:
sudo apt install ros-xxx-xxx-xxx
官方功能包參考路徑:
shiyanlou:oztf_ws/ $ roscd turtlebot_stdr/ [10:51:18]
shiyanlou:turtlebot_stdr/ $ pwd [10:51:26]
/opt/ros/kinetic/share/turtlebot_stdr
shiyanlou:turtlebot_stdr/ $ [10:51:28]
5.功能包編譯部分
使用源碼可以自定義功能包,完成後,需要使用catkin_make編譯。
使用自定義功能包,需要source。
source /home/shiyanlou/Code/oztf_ws/devel/setup.zsh
export TURTLEBOT_STDR_MAP_FILE=/home/shiyanlou/Code/oztf_ws/src/turtlebot_stdr/maps/oztf.yaml
roslaunch turtlebot_stdr turtlebot_in_stdr.launch
預設通常為官方路徑功能包。
6. 導航
ROS1雲課-導航實踐測評_zhangrelay的部落格-CSDN部落格
手工換自動,指哪裡,機器人自動運作到哪裡。
使用rqt檢視:
進一步可以擴充巡邏,定點巡航等。
案例參考:
為了更好地保障倉庫貨物的安全,降低企業的運作成本,提高企業生産效率及産品品質,項目小組設計了一款基于ROS系統的倉庫巡邏機器人,并對該倉庫巡邏機器人進行了實驗測試。實驗測試結果表明:該機器人可以通過雷射雷達進行地圖建構和自主巡邏;通過報警系統與自身定位完成對倉庫内的異常情況進行回報和報警等相關任務;實作了自主導航、自主定位、報警和巡邏功能,具有可二次開發、成本低等優點。
針對室内大型場所的三防自動化困難問題,設計了一款室内安防巡邏與滅火多功能機器人,具有電子地圖建構、定位、導航、事故處理與遠端監控等功能。給出了該機器人總體組成與控制系統軟硬體架構,并對機器人核心的電子地圖自主建構功能做了實驗測試。試驗結果表明,該機器人可以自主建構出現實環境的電子地圖,保證定位與導航功能的實作基礎。
7. 區域覆寫部分
溯螺旋算法(BSA)是一種基于使用螺旋填充路徑的移動機器人覆寫政策;為了保證完整性,未通路區域被标記并被回溯機制覆寫。BSA基本算法被設計成在由粗粒度網格模拟的環境中工作。BSA已經擴充到不僅包括自由栅格,而且包括部分被占據的栅格。本文介紹了擴充BSA的概念和算法。用于擴充BSA的思想是通用的,是以類似的方法可以用于擴充大多數基于網格的覆寫算法。最後,給出了一些仿真結果,表明BSA能夠實作完全覆寫。
BSA算法不僅考慮了完備性概念,而且評估了有效覆寫率,能夠實作可達表面的完全覆寫。即使擴充的BSA更複雜,它仍然易于實作,隻需添加一些反應性規則來調用和實作沿牆過程。