ros2_operation

1.conda

1.下载完miniconda后要记得添加环境目录

export PATH="/root/miniconda3/bin:$PATH"


2.Ubuntu的各种工具

1.截图

使用PrtSc键

2.复制文件路径

打开文件所在目录终端,输入pwd,然后复制

3.下载断开的恢复

wget -t 0 -c <文件地址>
-c表示断点续连,-t表示断了会每经过几秒重新连接一次,0表示一直不断重连。

4.注意点1

有些命令,不能同时开两个窗口一起执行,会两条命令会竞争锁,导致其中一条命令会报错

5.注意2

Ubuntu内核升级了,NVIDIA驱动就会不匹配(虽然它还在)

6.注意3

在终端中,输入一段字符后,按下tab键会自动补全ros

7.注意4

在运行ros节点的终端里,按ctrl+c键,可以打断当前终端运行的程序

3.ROS2开发环境搭建

机器人学习网站:鱼香社区:主页 | 鱼香ROS

1.Ubuntu可以用虚拟机也可以用双硬盘的双系统

2.安装ROS2

可以采用手动和安装工具两种方式安装ROS2的二进制包

在终端打开,然后输入(wget http://fishros.com/install -O fishros && bash fishros),接着一下有需要选择得都选择1

3.一键安装语句

wget http://fishros.com/install -O fishros && bash fishros 然后自己选择就行

4.rqt工具

在工具栏选择Plugins > Introspection > Node Graph选项,打开后单机左上角的刷新按钮,获取当前系统最新的节点关系

5.linux终端基础操作

(1)pwd

用于查看当前终端所在目录

(2)#

用于注释

(3)/

标识整个文件系统的根目录(可以使用cd /命令)

(4)ls

查看当前目录下的文件

(5)mkdir touch

mkdir创建文件夹 touch创建文件

(6)nano工具

可以对文件进行编辑,nano是安装Ubuntu时自带的文本编辑工具

按Ctrl + O键,然后按回车键讲内容写入文件,再按ctrl+X键退出编辑

(7)cat rm

cat查看文件内容 rm删除文件

(8)--help

在命令后加上--help,直接运行即可查看帮助信息

  • 注意:cd /是切换到当前终端的目录,cd ~ 是回到主目录

    (9)dpkg

    sudo dpkg -i命令是用于安装软件的

6.在linux中安装软件

(1)使用sudo dpkg -i命令来安装软件

dpkg是Ubuntu中的包管理工具,可以用于安装、查看、卸载软件包,而dpkg命令前加上sudo标示以官员权限执行dpkg命令,dpkg后面的-i代表安装的意思

可以直接安装下载好的deb格式安装包

(2)使用apt来安装软件

更高级的包管理工具,可以通过软件的名字自动下载然后进行安装。如果要在Linux中安装一些常用的软件,可以直接通过apt命令一键完成

7.在Linux中编写Python和C++程序

在机器人开发时最常用的语言就是C++和Python

可以在终端中运行程序

python3 程序名称(也可以在VScode的终端中运行得到结果)

C++在终端中运行会生成一个a.out文件,该文件是可执行文件,使用./a.out就可以执行该文件

(总共两行命令

g++ 运行的文件

./a.out)

(!)对于C++使用g++来编译简单的代码文件非常方便,单对于需要各种一来的复杂代码,使用CMake工具更加方便。在chapt1目录下新建CMakeLists.txt文件,然后输入

cmake_minimum_required (VERSION 3.8)

project (HelloWorld) ​ add_executable(learn_cmake hello_world.cpp)

第一行用于给出构建当前文件最低的CMake版本,第二行用于声明工程的名字,第三行用于添加一个可执行文件。这里learn_cmake标识可执行文件的名字,hello_world.cpp是可执行文件相对CMakeLists.txt文件的路径。编写好并保存后,在终端中输入cmake . 就能将CMakeLists.txt转换为Makefile。后面的参数“ . ”标识CMakeLists.txt在当前终端同级目录搜索CMakeList.txt文件,其中Makefile文件可以呗make命令读取并进行代码编译

make命令会调用编译器讲代码转换成可执行文件

对可执行文件 在终端中输入./文件名 就可以直接运行文件

8.Linux的环境变量

linux的环境变量是一种全局变量,用于存储系统和用户级别的配置信息

echo $ROS_DISTRO 当前终端的ROS版本信息就存储在环境变量ROS_DISTRO中。可以查看改环境变量的值

ros2 run会先读取环境变量AMENT_PREFIX_PATH的值,然后到该环境变来给你下的lib目录内查找功能包和可执行文件

echo $AMENT_PREFIX_PATH 查看该环境变量的值

ls $AMENT_PREFIX_PATH/lib | grep turtlesim 在$AMENT_PREFIX_PATH/lib下查找turtlesim

ls $AMENT_PREFIX_PATH/lib/turtlesim 查看turlesim目录下的所有内容

$AMENT_PREFIX_PATH/lib/turtlesim/turtlesim_node 使用环境变量拼接处可执行文件的路径

设置环境变量

可以通过export命令在Linux中设置环境变量,示例:

export AMENT_PREFIX_PATH=/opt/ros/

9.VScode

1.在编辑代码时,把鼠标指针长时间悬停子某个函数上,函数注释就会随之跳出

2.下载C++Extension

安装完成后,点击出现的小灯泡,单击”编辑'includePath'设置”,转跳到设置界面

在设置界面添加ROS2头文件所在的目录/opt/ros/${ROS_DISTRO}/include/**(放在和${workspaceFolder}/**一起)

3.配置头文件目录后,会在VS Code当前的工作目录生成一个.vscode/c_cpp_properties.json文件。注意,这个文件只存在于当前目录,所以改变工作目录需要重新配置

4.打开集成终端的快捷键是 ctrl + `

5.通过命令面板开启VScode的错误波浪线提示

按下快捷键ctrl+shift+p打开控制面板,输入Enable Error Squiggles并执行

4.ROS2中的注意点

1.ament_target_dependencies()

可以写入多个头文件

2.环境配置

需要在C/C++ Configurations中的环境变量中写入 /opt/ros/${ROS_DISTRO}/include/** 才能成功接收到CMakeLists.txt文件里面的东西

3.终端运行文件

使用ros2 run语句运行的文件名称,应该是CMakeLists.txt中的文件名称,而不是自己创建的.cpp文件名称

4.运行修改代码后的程序

每次修改完代码以后,都需要重新构建功能包colcon build,然后定位source install/setup.bash,才能够实现对代码的架构运行

5.C++对依赖的添加问题

总共有三种。第一种就是添加其他目录下的文件,第二种就是添加自己目录下的文件,第三种就是添加官方下载好的文件。(就是你需要在文件中导入目录都需要手动创建一个动态库)(不然CMake会查找不到你导入的东西(python是可以直接建立)

6.实现创建特定的功能包

colcon build --packages-select 文件夹名称

7.如果有报错,可能是一整句语句中某一个东西打错了字

8.命令

find_package(rclcpp REQUIRED) 查找rclcpp头文件和库文件的路ing

target_inlcude_directories(ros2_cpp_node PUBLIC ${rclcpp_INCLUDE_DIRS})

target_link_libraries(ros2_cpp_node ${rclcpp_LIBRARIES})

9.其实只要是之前建立过的功能包,且在install/.../lib/里面还存在的,可以直接用ros2 run来直接调用,跟改不改.cpp文件没有关系


5.ROS2常用工具

1.GUI框架rqt

在任意终端输入rqt 命令就可以启动 rqt

rqt 是一个 GUI 框架,可以将各种插件工具加载为可停靠的窗口

rqt 并不是指某一个工具,而是一个框架,基于这个框架可以编写新的工具

需要掌握如何安装新的rqt插件

sudo apt install ros-humble-rqt-tf-tree -y

上面的命令用于安装 rqt-tf-tree 这一工具,该工具将安装到 ROS 2 的默认安装目录下,安装完成后需要删除 rqt 的默认配置文件,才能让 rqt 重新扫描和加载到这个工具,继续在终端中输入代码清单 5-28 中的命令,删除 rqt 配置文件

rm -rf ~/.config/ros.org/rqt_gui.ini

新启动 rqt,然后选择 Plugins → Visualization → TF Tree 选项,即可打开 TF Tree 插件,运行 5.3 节的 TF 发布节点,单击左上角的 Refresh 按钮

sudo apt install ros-$ROS_DISTRO-rqt-*

安装rqt所有相关组件

2.数据可视化工具RViz

在学习 TF 时,虽然可以通过 tf2_tools 或 rqt-tf-tree 查看 TF 数据帧之间的关系,但并不能直观地看到它们在空间中的关系,而 RViz 不仅可以帮助我们实现坐标变换可视化,还可以实现机器人的传感器数据、3D 模型、点云、激光雷达数据等数据的可视化与交互

RViz 窗口左侧的 Displays 部分用于控制显示的数据。当需要显示某个数据时,可以单击Displays 窗口下方的 Add 按钮添加要显示的视图。

6.VScode

1.AI编程助手

Fitten Code

(1)智能代码补全(tab键)

(2)生成测试

2.运行C++程序

(1)使用g++

  • g++ 文件名

  • ./a.out

(2)使用cmake

  • 创建CMakeLists.txt文件

  • cmake .

  • make

  • ./文件名(在CMakeLists.txt里面新命名的)

(3)使用功能包来组织C++节点


CMakeLists.txt文件详解

1.常用变量

PROJECT_NAME:用函数project()指定的项目名称

LIBRARY_OUTPUT_PATH:库文件输出位置

2.指令详解

· (1)PROJECT()

该函数定义了工程的名字

(2)set()

环境变量,示例:

set(EXECUTABLE_OUTPU_PATH ${PROJECT_BINARY_DIR}/bin)

设置可执行文件的输出路径为build/bin

set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

设置库文件的输出路径为build/bin

(3)include_directories(xxx)

给工程添加头文件

target_include_directories()

为指定的目标添加搜索头文件

(4)add_executable()

添加可执行文件,其中可执行文件需要...来编译生成

(5)add_library()

将源文件生成 静态/动态 库文件

(6)target_link_libraries()

为库或者可执行文件添加需要链接的库

(7)find_package( EXACT/QUIET/REQUIRED)

EXACT:要求该版本号必须精确匹配

QUIET:禁掉没有找到时的警告信息

REQUIRED:表示没有找到包的话,CMake的过程会终止,并输出警告信息、

(8)install

install(TARGETS a.a b.so exe ARCHIVE a.a DESTINATION lib/ LIBRARY b.so DESTINATION lib/RUNTIME exe DESTINATION lib/)

TARGETS:通过ADD_EXECUTABLE ADD_LIBRARY定义的目标文件,

ARCHIVE特指静态库

LIBRARY特指动态库

RUNTIME特指可执行目标二进制

DESTINATION定义了安装的路径

注意:可能会报错,但是其实能够成功运行

  • 导入其他包

    • (1)导入同一个功能包下的其他文件

    • find_package(builtin_interfaces REQUIRED)

    • rosidl_generate_interfaces(${PROJECT_NAME}

      "include/msg/SystemStatus.msg"

      DEPENDENCIES builtin_interfaces

      )

    • (2)添加动态库

    • add_library(my_ros2_library src/my_ros2_library.cpp)

    • target_include_directories(my_ros2_library PUBLIC
        $
        $
      )
    • ament_target_dependencies(my_ros2_library rclcpp)
    • # 安装库文件和头文件
      install(
        TARGETS my_ros2_library
        EXPORT export_my_ros2_library
        ARCHIVE DESTINATION lib
        LIBRARY DESTINATION lib
        RUNTIME DESTINATION bin
      )

常用语句

cmake_minimum_required(VERSION 3.8)
...
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
# 1. 查找 rclcpp 头文件和库
find_package(rclcpp REQUIRED)
# 2. 添加可执行文件 cpp_node
add_executable(cpp_node src/cpp_node.cpp)
# 3. 为 cpp_node 添加依赖
ament_target_dependencies(cpp_node rclcpp)
# 4. 将 cpp_node 复制到 install 目录
install(TARGETS
cpp_node
DESTINATION lib/${PROJECT_NAME}
)
...
ament_package()

ROS2 相关指令

1.ros2运行

ros2 run

2.ros2节点列表

ros2 node list

3.ros2节点信息

ros2 node info

ros2 node info返回订阅者、发布者、服务和操作的列表

4.列出当前所有可用话题(topics)的指令

ros2 topic list

5.订阅某个话题,想要查看某个话题

ros2 topic echo /cmd_vel

6.查看话题的消息类型(知道某个话题的数据格式)

ros2 topic info /cmd_vel

输出示例:

Type: geometry_msgs/msg/Twist

Publisher count: 1

Subscriber count: 2

7.查看当前存在的服务

ros2 service list

8.查看接口的详细信息

ros2 interfaces show

9.创建功能包语句解析

ros2 pkg create demo_cpp_pkg --build-type ament_cmake --license Apache-2.0

(1)ros2 pkg create:

用于创建新的软件包,pkg代表package,create是创建的意思

(2)demo_cpp_pkg:

是要创建的软件包的名称

(3)--build-type ament_cmake:

--build-type用于指定软件包的构建类型,ament_cmake是ROS2中常用的一种构建系统,它基于CMake,能够帮助你编译和管理ROS2软件包,使用ament_cmake可以方便地处理ROS2的依赖项、消息类型和其他特殊公功能

(4)--license Apache-2.0:

--license用于指定软件包所采用的开源许可证,Apache-2.0是一种广泛的开源许可证


package.xml指令

(1)

这是package.xml的根元素,所有其他元素都包含在这个元素内。它通常包含format属性,示例:

(2)

定义包的名称

(3)

定义包的版本号

(4)

提供包的简短描述

(5)

定义包的维护者信息,通常包括维护者的姓名、邮箱和角色

(6)

指定包的许可证

(7)

这些标签定义了包的依赖关系

buildtool_depend是构建工具依赖

exec_depend是执行时依赖

test_depend是测试时依赖,示例:

cmake

rclcpp

gtest


colcon build进行构建生成的目录详细说明

1.install

(1)share

share目录主要用于存放与特定项目相关的非二进制文件

  • 配置文件:XML、YAML等配置文件,这些文件通常用于参数配置胡节点配置

  • 启动文件:.launch.py文件,用于配置和启动一组节点和/或相关的ROS功能

  • 资源文件:可能包括图像、地图、描述文件、模型等

  • CMake和package配置:包含package.xml和可能的CMake配置文件

(2)lib

lib目录包含了所有的库文件和可执行文件

  • 二进制可执行文件:编译后的可执行文件,可以直接运行,通常是ROS节点

  • 动态连接库:.so文件

  • python模块

  • 插件和其他资源

(3)include

include目录用于存放头文件,这些文件提供了库的接口定义,是进行C/C++变成时用于库集成的必要文件

2.colcon build 和 colcon build --symlink-install的区别

(1)colcon build

通常用于生产环境或发布阶段

它会把构建的文件复制到安装目录中

(2)colcon build --symlink-install

在开发过程中更常用,因为它使用符号链接指向源代码目录,而不是复制文件

7.linux常用命令

1.压缩文件夹

zip命令

(1)基本压缩

zip -r archive.zip folder_name

注意:如果只写folder_name,系统会按照当前工作目录来定位该文件夹

例如,当前你在/home/user目录下,要压缩/home/user/documents文件夹,那么直接使用zip -r archive.zip documents即可,因为此时documents文件夹就在当前工作目录下,系统能够直接找到它。

但是也可以使用绝对路径

zip -r archive.zip /var/www/html

2.windows和linux同步时间

sudo apt install ntpdate

sudo apt-get install

sudo apt-get update

sudo ntpdate time.windows.com

sudo hwclock --localtime --systohc

你可能感兴趣的:(数据库,chrome,前端)