franka_ros2不支持Windows
先决条件
ross 2 foxy 安装(ROS - Foxy -desktop)
PREEMPT_RT内核(可选,但强烈推荐)。
系统范围的libfranka安装。下面是一个简单的例子:
sudo apt install -y libpoco-dev libeigen3-dev git clone https://github.com/frankaemika/libfranka.git --recursive cd libfranka mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF .. cmake --build . -j$(nproc) cpack -G DEB sudo dpkg -i libfranka-*.deb
可选的. bashrc设置
要获得彩色警告和错误消息,可以将export RCUTILS_COLORIZED_OUTPUT=1放入.bashrc中。
如果你的系统语言没有设置为美式英语,你应该输入export LC_NUMERIC=en_US。UTF-8到你的。bashrc,以避免问题在RViz。
设置 安装要求
ros-foxy-control-msgs \ ros-foxy-xacro \ ros-foxy-angles \ ros-foxy-ros2-control \ ros-foxy-realtime-tools \ ros-foxy-control-toolbox \ ros-foxy-moveit \ ros-foxy-ros2-controllers \ ros-foxy-joint-state-publisher \ ros-foxy-joint-state-publisher-gui \ ros-foxy-ament-cmake-clang-format \ python3-colcon-common-extensions
创建一个 ROS 2 工作空间
mkdir -p ~/franka_ros2_ws/src
克隆repo并构建包:
source /opt/ros/foxy/setup.bash cd ~/franka_ros2_ws git clone https://github.com/frankaemika/franka_ros2.git src/franka_ros2 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release source install/setup.sh
MoveIt
看看是否一切正常,你可以试着在机器人上运行MoveIt示例:
ros2 launch franka_moveit_config moveit.launch.py robot_ip:=<fci-ip>
然后激活RViz中的MotionPlanning显示。
如果你没有机器人,你仍然可以通过运行一个虚拟硬件来测试你的设置:
ros2 launch franka_moveit_config moveit.launch.py robot_ip:=dont-care use_fake_hardware:=true
等待直到看到绿色的You can start planning now!然后关掉PlanningScene,然后关掉,再打开,MotionPlanning
例子控制器
这个repo附带了一些位于franka_example_controllers包
默认情况下,以下启动文件将与抓手一起执行。如果没有附加抓手,可以在启动文件中禁用抓手load_gripper:=false
Move-to-start
这个控制器将机器人移动到它的home配置。
ros2 launch franka_bringup move_to_start_example_controller.launch.py robot_ip:=<fci-ip>
Gravity Compensation
这是我们拥有的最简单的控制器,也是编写自己的控制器的一个很好的起点。它向所有关节发送力矩为零的指令,这意味着机器人只补偿自己的重量。
ros2 launch franka_bringup gravity_compensation_example_controller.launch.py robot_ip:=<fci-ip>
Joint Impedance Example
该示例以非常顺从的周期运动移动关节4和5。你可以试着在它跑步时移动它的关节。
ros2 launch franka_bringup joint_impedance_example_controller.launch.py robot_ip:=<fci-ip>
Package Descriptions
这个包包含示例和基本的启动文件franka.launch.py启动文件,可以用来启动机器人没有任何控制器。
当你如下启动机器人
ros2 launch franka_bringup franka.launch.py robot_ip:=<fci-ip> use_rviz:=true
没有控制器从这里分开 joint_state_broadcaster然而,与机器人的连接仍然是建立的,当前机器人的姿态在RViz中是可视化的。在这种模式下,当用户按下停止按钮时,机器人可以被引导。如果控制器用了这个命令 effort_command_interface,机器人将使用libfranka的扭矩接口。例如,可以启动gravity_compensation_example_controller跑下面的程序
ros2 control load_controller --set-state start gravity_compensation_example_controller
这相当于运行gravity_compensation_example_controller.launch.py
当控制器停止运行
ros2 control set_controller_state gravity_compensation_example_controller stop
机器人将停止转矩控制,只将其当前状态发送到FCI。
你现在可以选择启动相同的控制器:
ros2 control set_controller_state gravity_compensation_example_controller start
或者加载并启动一个不同的程序:
ros2 control load_controller --set-state start joint_impedance_example_controller