ROS-学习笔记-03-(Ubuntu20.04 Noetic运行Web上位机和Nav2d)

2023-05-16

Ubuntu20.04 ROS Noetic 编译运行Nav2d


前言

Ubuntu20.04 Noetic 下的利用rosbridge、roslib和ros2d等库实现的网页端Js Widget,以及运行PR2_Navigation和turtlebot_navigation教程。

  • Js源码仓库地址:Nav2d
  • 教程参考官方:CreatingABasicNav2DWidget
  • 一共有两个案例:PR2_navigation和turtlebot_navigation
  • 本文分为安装和运行两部分内容。
  • 本文代码仓库:RosNavJs.git

文章目录

    • Ubuntu20.04 ROS Noetic 编译运行Nav2d
    • 前言
    • 安装
        • 1、安装map-server
        • 2、下载编译安装pr2机器人
        • 3、下载编译turtlebot和willow map等
        • 4、下载nav2djs
    • 运行
        • 0.修改js文件
        • 1.运行PR2_navigation
        • 2.运行turtlebot_navigation
  • 总结
  • 附加


安装

1、安装map-server

sudo apt-get install ros-noetic-map-server

2、下载编译安装pr2机器人

(其实可以不安装)但是安装了才可以运行官方pr2_navigation的例子,但是这里面坑很多。

建议参考我的这篇博客:Ubuntu20.04+Noetic编译pr2和pr2_navigation

由于Noetic还不支持pr2很多package,所以参考kinetic版本进行自行编译,主要修改了一些CMakeList和参数和引用。脚本源码和修改后的库都在这里 ROS_Noetic_pr2

如果嫌编译整个pr2很麻烦,可以只运行其中的sh脚本安装ompl,而不进行catkin_make。

3、下载编译turtlebot和willow map等

二者安装方法类似,都是下载好ompl以后,把没支持noetic的package用catkin_make进行编译。
因为这几个包的坑没有pr2那么多,不需要做什么修改,可以直接编译。

sudo apt-get install ros-noetic-ecl-core ros-noetic-kobuki-msg​ ros-noetic-ecl-mobile-robot libftdi-dev

未支持的包,下载源码并编译:

 git clone https://github.com/PR2/willow_maps.git
 git clone https://github.com/turtlebot/turtlebot_simulator.git 
 git clone https://github.com/turtlebot/turtlebot.git
 git clone https://github.com/turtlebot/turtlebot_apps.git
 git clone https://github.com/yujinrobot/kobuki.git
 git clone https://github.com/yujinrobot/kobuki_core.git 
 git clone https://github.com/yujinrobot/yujin_ocs.git 
 git clone https://github.com/yujinrobot/yocs_msgs.git
 git clone https://github.com/ros-perception/ar_track_alvar.git

然后把这些包放在catkin_ws/src目录下:

mkdir catkin_ws catkin_ws/src
cp -r willow_map/ catkin_ws/src/
cp -r turtlebot_simulatorp/ catkin_ws/src/
... 
cd catkin_ws
catkin_make 
catkin_make install

如果编译willow maps时报错:

 "/home/jillian/ROS/catkin_ws/build/willow_maps/willow-sans-whitelab-0.025.pgm":
 No such file or directory.”

发现出错后,我搜索了一下git上面的commit,选择手动下载该文件然后放进build文件夹。最后再catkin_make install 一下就行。

  • willow-sans-whitelab-0.025.pgm
  • willow.tmap

如果编译ar_track_alvar时报错

手动把ar_track_alvar下ar_track_alvar子文件移除,只留下ar_track_alvar_msgs,因为只需要这个包。

如果想要安装到opt/ros/noetic里面:

catkin_make -DCMAKE_INSTALL_PREFIX=/opt/ros/noetic install --force-cmake

当然用户一般是没有权限安装到opt的。可以把catkin_ws/build/install 下面的share拷贝到相应文件去。

4、下载nav2djs

git clone https://github.com/GT-RAIL/nav2djs.git


运行

0.修改js文件

打开下载好的js代码:nav2djs,打开example文件下任意例子。

如occupancygrid.html为例子

修改js脚本引用,上方四个js库都可以在网上搜索到,可以下载整个工程,也可以指下载min.js文件。

而src里面的Nav2d.js和其他文件要通过npm仓库下载的相应脚手架工具打包成一个js文件。但是考虑到很多人并没有安装Node,所以就无视,直接把js引入即可。

在这里插入图片描述
同时修改上面的localhost为你对应ros启动的虚拟机/Docker或者服务器ip:

 ros = new ROSLIB.Ros({
    url : 'ws://localhost:9090'
  });

  ros = new ROSLIB.Ros({
    url : 'ws://192.168.1.139:9090'
  });

虚拟机在建立的时候,在设置-网络里面选择 网络桥接模式 (Bridge Network ),这样才能保证虚拟机和主机可以相互访问,因为该模式下虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。局域网内其他主机也可以访问虚拟机。
同时记得开放9090端口:

sudo ufw status
sudo ufw allow 9090
sudo ufw enable
sudo ufw reload

1.运行PR2_navigation

运行机器人和gazebo
roslaunch pr2_gazebo pr2_empty_world.launch
原教程是加载pr2_wg_world,但是有bug无法运行
在这里插入图片描述
然后加载地图和导航模块:

export ROBOT=sim
rosrun map_server map_server /opt/ros/noetic/share/willow_maps/willow-sans-whitelab-0.025.pgm 0.025
roslaunch pr2_2dnav pr2_2dnav.launch

在这里插入图片描述
然后将机器人手臂收拢:roslaunch pr2_tuckarm tuck_arms.launch

如果报了python相关的错误,可以尝试直接用python启动该文件,查看错误并改正,有时候是python2和3之间的冲突。

发布机器人的姿势:rosrun robot_pose_publisher robot_pose_publisher

启动rosbridge 服务器:roslaunch rosbridge_server rosbridge_websocket.launch

最后打开HTML页面了,双击地图上所需的位置进行导航:
在这里插入图片描述


2.运行turtlebot_navigation

记得先:source ~/.bashrc 否则会定位到kinetic里面去。
开三个终端,分别运行:

export TURTLEBOT_STAGE_WORLD_FILE="/opt/ros/noetic/share/turtlebot_stage/maps/stage/maze.world"
export TURTLEBOT_STAGE_MAP_FILE="/opt/ros/noetic/share/turtlebot_stage/maps/maze.yaml"
roslaunch turtlebot_stage turtlebot_in_stage.launch
roslaunch rosbridge_server rosbridge_websocket.launch 
rosrun robot_pose_publisher robot_pose_publisher

效果如下:

turtlebot在rviz中效果
网页打开的效果

我修改了部分代码,使得轨迹也能被绘制出来,如果直接运行demo,是没有这条轨迹的。

总结


提示:这里对文章进行总结:
和编译模块比起来,这边坑少了很多,但我对ROS不太熟悉,还是在帮助下完成了这个。
对ROS的Topic和msg的了解更深入了。

附加

最新的更新,修改了一下界面,增添了所有Topic的显示,等我整理好就发到github上
在这里插入图片描述
代码:RosNavJs.git

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS-学习笔记-03-(Ubuntu20.04 Noetic运行Web上位机和Nav2d) 的相关文章

  • VFH 2D —— Path Planning

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 进行路径规划的前提是 xff0c 无人机或机器人自身已经对当前环境有一个清晰的认知 xff08 环境感知 x
  • PX4——rcs源码分析

    注 xff1a 本文转载自 博主 xff1a 虾米一代 博客 xff1a pixhawk原生码rcS分析 代码执行流程 1 编译时将cmake configs nuttx px4fmu v2 default cmake文件中配置的模块全部编
  • ArduPilot——AP_NavEKF3针对AP_NavEKF2做了哪些改进/变动?

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 本篇博文主要针对Paul Riseborough大神为ArduPilot做的导航EKF3算法 xff0c 相
  • QuadPlane (VTOL)——ArduPilot——流程梳理

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接
  • 进程的几种状态

    进程 xff1a 进程 xff08 Process xff09 是计算机中的程序关于某数据集合上的一次运行活动 xff0c 是系统进行资源分配和调度的基本单位 进程状态 xff1a 一个进程的生命周期可以划分为一组状态 xff0c 这些状态
  • 超声波纳米材料乳化分散震动棒设计

    超声波纳米材料乳化分散震动棒利用超声波的超声空化作用来分散团聚的颗粒 它是将所需处理的颗粒悬浮液 xff08 液态 xff09 放入超强声场中 xff0c 用适当的超声振幅和作用时间加以处理 由于粉体颗粒团聚的固有特征 xff0c 对于一些
  • noVNC+VNCserver实现远程访问Docker容器桌面

    一 实验环境 主机 xff1a Ubuntu16 04 目标机 xff1a docker容器 说明 xff1a 在主机Ubuntu16 04中安装docker xff0c 并虚拟出一台Ubuntu容器 xff0c 将该容器作为要远程访问的目
  • 本地项目(vscode)和码云建立连接,及常用git命令

    本地Git和线上关联 xff1a 权限设置 G码云 设置 SSH公钥 公钥管理电脑桌面点击右键进入Git Bash Here对照链接输入指令绑定邮箱 xff1a https gitee com help articles 4181 arti
  • 解决android studio 控制台乱码

    双击shift键 xff0c 输入vmoption xff0c 选择Edit Custom CM Options 如果没有配置过 xff0c 就会弹出窗口问是否创建配置文件 xff0c 点击Create xff0c 输入 Dfile enc
  • 无人机学习笔记

    硬件 首先从硬件开始说起把 xff0c 气压计 陀螺仪 磁力计 xff0c 这三个不用说肯定是必备的 xff0c 后面由于开发的需要还添加了激光测距 xff0c 以及光流 但是在开发过程中遇到了很多问题 xff0c 一个一个来说 气压计 气
  • 解决KEIL中ARM编译器不能编译的问题

    keil编译器出现问题 xff0c 根据提示意思就是ARM编译器选择不对的问题 Target 39 Printf 39 uses ARM Compiler 39 V5 06 update 6 build 750 39 which is no
  • linux 内核中strstr函数 功能

    在内核代码中看到strstr函数 xff1a mode 61 strstr boot command line 34 D 34 应该是一个字符串处理函数 xff0c 使用man命令查看下给出如下解释 xff1a SYNOPSIS inclu
  • KPI异常检测资料汇总

    文章目录 0 综述类1 KPI异常检测1 1 经典模型1 1 1 Donut 基于VAE的周期性无监督KPI异常检测1 1 1 1 论文解读1 1 1 2 源码分析 1 12 MAD 基于GANs的时间序列数据多元异常检测 1 2 行业落地
  • jupyter notebook:使用argparse包存在的问题及解决

    argparse模块 argparse是python用于解析命令行参数和选项的标准模块 导入argparse包 span class hljs keyword import span argparse 遇到的问题 parser 61 arg
  • Qt C++和Java相互调用

    Qt C 43 43 和Java相互调用 1 C 43 43 调用Java Test h span class token keyword class span span class token class name Test span s
  • 单片机HAL库使用HAL_UART_Receive_IT

    前言 由于本人第一次尝试开发单片机 xff0c 要实现的功能是信息转发 xff0c 需要调用HAL库方法 xff0c 中断接受信息转发给FPGA xff0c 这里没有用到DMA方式所以不做赘述 xff0c 特此记录分享希望帮到你们 发送信息
  • VLC播放gstreamer pipeline rtp流

    一 xff1a Gstreamer 下载gstreamer 编译等自行百度 pipeline命令 硬编码输出rtp gst launch 1 0 e videotestsrc 34 video x raw format 61 I420 wi
  • 【unity】Multiple plugins with the same name '...'解决方案

    Multiple plugins with the same name 39 ulua 39 found at 39 Assets Plugins uLua 1 22 x86 64 ulua dll 39 and 39 Assets Plu
  • CMAKE 环境变量

    CMAKE CXX FLAGS CMAKE C FLAGS 在cmake脚本中 xff0c 设置编译选项有两种方式 xff1a 1 1 add compile options命令 add compile options命令添加的编译选项是针
  • Gstreamer常见pipeline命令 - 持续更新中

    解码 xff1a xff08 根据码流类型自适应创建相应解码器 xff09 gst launch 1 0 filesrc location 61 home user DCIM Camera VID 20201001 103749 mov q

随机推荐

  • ubuntu18.04 安装包提示没有可安装候选

    sudo apt get install gcc 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 没有可用的软件包 gcc xff0c 但是它被其它的软件包引用了 这可能意味着这个缺失的软件包可能已被废弃 xf
  • D435在ROS下的使用

    本人电脑Ubuntu16 04 Ros 为kinetic D435可以用的ros源码下载地址 https github com intel ros realsense releases一定要仔细查看每一个版本基于的sdk的版本号 D435的
  • 在ros下使用D435出现问题ResourceNotFound: realsense2_camera

    在launch的文件内运行roslaunch rs rgbd launch出现错误 xff1a ResourceNotFound realsense2 camera 或运行 roslaunch realsense2 camera rs rg
  • 在ROS中发布IMU数据

    本文主要是来发布sensor msgs Imu类型的消息 xff0c 其中 xff29 xff2d xff55 的数据为虚拟的 xff11 xff0e 在自己的工作空间中创建ros程序包 这个包依靠std msgs roscpp rospy
  • 控制理论学习资料

    DR CAN 傅里叶分析之掐死教程 xff08 完整版 xff09 更新于2014 06 06
  • 卡尔曼滤波原理二:扩展卡尔曼

    1 理论部分 上一篇介绍了线性卡尔曼滤波器 xff0c 当系统为线性高斯模型时 xff0c 滤波器能给出最优的估计 xff0c 但是实际系统总是存在不同程度的非线性 xff0c 如平方 三角关系 开方等 对于非线性系统 xff0c 可以采用
  • PIXHAWK添加自定义消息存储到SD卡

    四旋翼调试阶段总会出现很多难以预见的现象 xff0c 这时为了找到所出问题的原因 xff0c 就需要获得原始相关数据进行分析 xff0c pixhawk代码提供了记录飞行日志的功能 xff0c 能够将飞行中的重要数据存入SD卡中 xff0c
  • reStructuredText介绍

    文档格式编辑 xff0c 目前主流最强大的要是latex xff0c 但是语法太复杂 xff0c 环境要求也多 xff0c 有的时候也是写文档往往选择markdown xff0c 常常怀疑文档编辑的markdown不是亲生的 xff0c 很
  • ROS2—自定义话题及服务消息类型

    1 source ROS 2 环境 source ROS 2的基础工作空间可以使用下面的命令 xff1a source opt ros foxy setup bash 2 创建一个新的文件夹 执行类似下面的命令 xff1a mkdir p
  • 用VSCode编译运行C++(2022最新教程)以及会遇到的两个问题

    这玩意我弄了一下午 xff0c 发现网上很多教程都过时了 xff0c 现在自己整理一下造福后人 目录 第一步 xff0c 下载和配置mingw64 xff0c 即C C 43 43 编译器GCC的Windows版本 第二步 xff0c 下载
  • 从零开始学USB(一、基础知识1)

    1 什么是USB USB是Universal Serial Bus的缩写 xff0c 中文译为通用串行总线 正如USB的第一个单词表述的那样 xff0c 为了通用 那么我们看一下 xff0c 还有哪些总线不是串行的 xff0c 哪些是不通用
  • 5,树莓派3B+ 使用 Frp 实现内网穿透,公网访问web服务器,设置自动启动,后台运行。 (新人向)

    内网穿透 就是让没有固定公网 ip 的内网的服务器 xff0c 暴露在公网之上 xff0c 从而在外网可以访问 基于这个工具 xff0c 不但可以让外部网络访问内网的web服务器 xff0c 也可以访问我们自建的NAS服务器 xff08 私
  • 关于编程学习上的一些感悟——不忘初心

    序 今天无意中看到以前一起开发过的同学写的技术文章 xff0c 了解到了更多在blog和github以及一些技术交流论坛上面非常活跃 回过头来看看自己 xff0c 好像依然停留在以前的样子 xff0c 似乎与真正在踏实学技术差距好像很大了
  • uORB笔记整理

    其实是对自己看过的文章中讲uORB的部分进行了记录 uORB Micro Object Request Broker 微对象请求代理器 是PX4 Pixhawk系统中非常重要且关键的一个模块 xff0c 它肩负了整个系统的数据传输任务 xf
  • 因子图-gtsam

    闲着写下关于gtsam的内容 更新中
  • 1+11+111+1111+11111+……+11……11(2009个1)的和有多少个1?

    直接贴代码了 lt span style 61 34 font family Courier New 34 gt include lt stdio h gt define SIZE 10 int main void int i int co
  • uC/OS-ii 学习步骤及书籍推荐

    第一步 嵌入式实时操作系统 COS II原理及应用 任哲编著 首选任哲的这本书 我建议先把这本书看一遍 xff0c 弄清楚ucos是怎么回事 xff0c 至于操作系统里面的具体代码实现 xff0c 大概了解就行 xff0c 可以暂且不去细究
  • 利用 Docker 编译 OpenWrt

    原文链接 xff1a 利用 Docker 编译 OpenWrt 五十风的个人博客 由于网络原因编译openwrt时经常下载失败 xff0c 搭建编译环境也很复杂 xff0c 因此想到利用阿里云 Github action等远程构建docke
  • Ubuntu20.04安装ROS Neotic修复依赖问题过程记录

    出现的问题 xff1a 下列软件包有未满足的依赖关系 xff1a ros noetic desktop full 依赖 ros noetic desktop 但是它将不会被安装 依赖 ros noetic perception 但是它将不会
  • ROS-学习笔记-03-(Ubuntu20.04 Noetic运行Web上位机和Nav2d)

    Ubuntu20 04 ROS Noetic 编译运行Nav2d 前言 Ubuntu20 04 Noetic 下的利用rosbridge roslib和ros2d等库实现的网页端Js Widget xff0c 以及运行PR2 Navigat