人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

时间:2022-09-01 11:52:01

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

这是机器人系统设计与控制技术的后续课程,全部的课程内容包括四门课程(本科),如下:

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

人机智能交互技术是人机融合的基础,课程介绍多种人机交互技术,包括传统和新兴的,围绕人、机器人和交互软件展开。

比较有趣的案例,如下:

1 语音交互:http://blog.csdn.net/zhangrelay/article/details/68951068

2 视觉交互:http://blog.csdn.net/zhangrelay/article/details/53223939

3 感应交互:http://blog.csdn.net/zhangrelay/article/details/52356417

4 脑电交互:http://blog.csdn.net/zhangrelay/article/details/50932120

更多内容,可在网络上进行资料检索。本课程侧重两款常用于机器人的传感器,RGB-D摄像头和Leap Motion手势设备。

三维环境识别感知人体运动识别三维手势跟踪为案例进行具体介绍。

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料  人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料  人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

课程作业:4次实践报告、1次创新大作业。更多内容稍后补充。

----补充阅读:

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料


open_manipulator:https://github.com/ROBOTIS-GIT/open_manipulator/wiki

使用ROS学习机器人编程的系统方法

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

特色

  • 从零开始学习ROS,不依赖于先前专业知识
  • 基于一系列相关的主题,逐步将ROS娓娓道来
  • 需要具备C ++的基础知识,但是并不需要编程、机器人、机器视觉、运动学/动力学或软件工程方面的专业知识
  • 展示ROS编程技术与Gazebo仿真
  • 提供机器人主题的研习,包括运动学、机器视觉、点云处理、地图构建、导航和用户界面人机接口内容一部分)。

概要

使用ROS学习机器人编程的系统方法通过对简单代码示例以及相应操作理论的详细解释,全面介绍了ROS的基本组件。本书探讨了ROS的组织,如何理解ROS软件包,如何使用ROS工具,如何将现有的ROS软件包纳入新的应用程序,以及如何开发新的机器人和自动化软件包。它还通过准备读者更好地了解现有的在线文档来促进继续教育。

这本书分为六部分。

1. 首先介绍ROS基础,包括编写ROS节点和ROS工具。消息,类和服务器也被覆盖。

2. 本书的第二部分是ROS的仿真和可视化,包括坐标变换。

3. 本书的下一部分讨论了ROS中的感知处理。它包括在ROS中使用摄像头,深度成像和点云以及点云处理。

4. 本书第四部分介绍了ROS中的移动机器人控制和导航。

5. 本书的第五部分包含机器人手臂在ROS中的使用。本节探讨机器人手臂运动学,手臂运动规划,使用Baxter Simulator进行手臂控制以及物体抓取包。

6. 本书的最后一部分重点介绍系统集成和更高级别的控制,包括基于感知和移动操作。这部分内容与本课程相关。

全部示例和有关C ++代码的信息,请访问https://github.com/wsnewman/learning_ros

代码使用说明

“使用ROS学习机器人编程的系统方法”。代码示例在与章节对应的文件夹中。

应将此整个存储库克隆到:〜/ ros_ws / src(假设ros工作区命名为“ros_ws”并位于主目录中)。

要执行此操作,请从终端导航至〜/ ros_ws / src,

然后输入: 

git clone https://github.com/wsnewman/learning_ros.git 

并克隆: 

git clone https://github.com/wsnewman/learning_ros_external_packages.git

然后,从终端,导航到〜/ ros_ws并使用命令编译代码: 

catkin_make

如果第一次安装ROS,请参阅以下说明: 安装脚本

位于此站点的脚本可自动安装ROS(与使用学习-ROS代码示例的版本和包一致)。这些脚本还安装了各种有用的工具。


在源码中可以看到具体的代码使用说明:

例如第一章learning_ros/Part_1/commands_summary_part1:

---------roscore, messages, nodes----------catkin_make  (if problems, do:     delete ros_ws/build and ros_ws/devel dirs     catkin_make clean      catkin_make)roscdcd srcmkdir ros_classcd ros_classcs_create_pkg rosclass_minimal_nodes roscpp std_msgs(note: cs_create_pkg uses "catkin simple", which is easier than catkin_create_pkg)cd rosclass_minimal_nodesls-----------minimal publisher--------open editor (gedit or: netbeans & disown)open file: .../learning_ros/Part_1/minimal_nodes/minimal_publisher.cppsave to directory: ros_ws/src/ros_class/rosclass_minimal_nodes/src/minimal_publisher.cppgedit CMakeLists.txt (is better than netbeans for this type of file)add:cs_add_executable(rc_minimal_publisher src/minimal_publisher.cpp)in any terminal (e.g. ctl-shift-t or file-> open tab) roscdcatkin_makein a terminal, start a roscore:roscorein another terminal, run the new pgm:rosrun rosclass_minimal_nodes rc_minimal_publisher in another terminal:rostopic listrostopic info topic1rosmsg show std_msgs/Float64rostopic echo topic1rostopic hz topic1see performance meteropen:.../learning_ros/Part_1/minimal_nodes/sleepy_minimal_publisher.cppsave in: ros_ws/src/ros_class/rosclass_minimal_nodes/src/sleepy_minimal_publisher.cppin CMakeLists.txt, add line:cs_add_executable(rc_sleepy_minimal_publisher src/sleepy_minimal_publisher.cpp)roscdcatkin_makerosrun rosclass_minimal_nodes rc_sleepy_minimal_publisherrostopic echo topic1rostopic hz topic1see performance meter------minimal_subscriber--------edit .../learning_ros/Part_1/minimal_nodes/minimal_subscriber.cppsave as: ros_ws/src/ros_class/rosclass_minimal_nodes/src/minimal_subscriber.cppCMakeLists.txt:cs_add_executable(rc_minimal_subscriber src/minimal_subscriber.cpp)catkin_makerosrun rosclass_minimal_nodes rc_minimal_subscriber(see behavior w/ and w/o minimal publisher running)rostopic pub -r 1 topic1 std_msgs/Float64 1.23rosnode listrosnode info minimal_subscriberrqt_graph----launch file----edit .../learning_ros/Part_1/minimal_nodes/launch/minimal_nodes.launchsave as: ros_ws/src/ros_class/rosclass_minimal_nodes/launch/minimal_nodes.launchedit package name (rosclass_minimal_nodes) and executable name (rc_sleepy_minimal_publisher, etc)kill running nodesroslaunch rosclass_minimal_nodes minimal_nodes.launchrqt_console----rosbag----rosbag record topic1restart minimal subscriberrosbag play fname.bagrqt_console---minimal simulator---edit minimal_simulator.cpp and minimal_controller.cpp; save in rosclass_minimal_nodes/srcedit CMakeLists.txt:cs_add_executable(rc_minimal_simulator src/minimal_simulator.cpp)cs_add_executable(rc_minimal_controller src/minimal_controller.cpp)catkin_makerosrun rosclass_minimal_nodes rc_minimal_simulatorrostopic pub -r 10 force_cmd std_msgs/Float64 0.1 rqt_plotkill publisherrosrun rosclass_minimal_nodes rc_minimal_controllerrostopic pub -r 10 vel_cmd std_msgs/Float64 1.0-------------end CH1--------------------CH2--------*custom messagesfrom ros_class directory,  cs_create_pkg example_ros_msg roscpp std_msgsopen .../learning_ros/Part_1/example_ros_msg/msg/ExampleMessage.msgsave in: ...ros_class/example_ros_msg/msg/ExampleMessage.msgin package.xml, uncomment lines: <build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend> catkin_makerosmsg show  example_ros_msg/ExampleMessageopen .../learning_ros/Part_1/example_ros_msg/src/example_ros_message_publisher.cpp save in ...ros_class/example_ros_msg/src/example_ros_message_publisher.cpp edit CMakeLists.txt; add line: cs_add_executable(rc_example_ros_message_publisher src/example_ros_message_publisher.cpp) catkin_make rosrun example_ros_msg rc_example_ros_message_publisher   (with roscore running) rostopic echo example_topicservices:from ros_class:cs_create_pkg example_ros_service roscpp std_msgs nav_msgs geometry_msgs open and save under .../ros_class/example_ros_service/src:example_ros_service.cppexample_ros_client.cppopen and save under ../ros_class/example_ros_service/srv:ExampleServiceMsg.srvedit package.xml; uncomment:<build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend>edit CMakeLists.txt; add:cs_add_executable(example_ros_service src/example_ros_service.cpp)cs_add_executable(example_ros_client src/example_ros_client.cpp)catkin_makerosrun example_ros_service example_ros_servicerosservice listrosservice inforosservice call lookup_by_name 'Ted'rosrun example_ros_service example_ros_client classes: see example_ros_class (pass in node handle; odd syntax for callbacks)rosrun example_ros_class example_ros_classrosservice call example_minimal_service rostopic pub -r 2 example_class_input_topic std_msgs/Float32 2.0*main using a library:rosrun creating_a_ros_library example_ros_class_test_main(then test, as above)libraries: creating_a_ros_library; note CMakeLists.txt for adding a librarywhere to put header file (then use <pkg/header_name.h>)  *the parameter server  *creating packages and librariesaction servers: in ros_class dir, create pkg:cs_create_pkg example_action_server roscpp actionlibopen and save under .../ros_class/example_action_server/action/demo.actionopen and save under .../ros_class/example_action_server/src/example_action_server.cppopen and save under .../ros_class/example_action_server/src/example_action_client.cppedit package.xml; uncomment: <build_depend>message_generation</build_depend>  <run_depend>message_runtime</run_depend> CMakeLists.txt: uncomment:find_package(Boost REQUIRED COMPONENTS system thread)add:cs_add_executable(example_action_server src/example_action_server.cpp)cs_add_executable(example_action_client src/example_action_client.cpp)catkin_makerosrun example_action_server example_action_serverrosrun example_action_server example_action_clientrosrun example_action_server example_countdown_serverrosrun example_action_server timer_clientParameter server:rosparamrosparam set /gains "p: 1.0i : 2.0d : 3.0"rosparam listrosparam get /gainsfrom .../learning_ros/Part_1/example_parameter_server/launch:rosparam load jnt1_gains.yamlrosparam listrosparam get jnt1_gainsrosparam delete jnt1_gainsrosparam list(launch file option--would need to copy over package/directory)example read_param_from_node: uses: if ( nh.getParam ("/joint1_gains/p", P_gain))


----请认真学习本书第六章

coordination commands:Start up gazebo, add starting pen, tables and blocks, spawn baxter-on-mobot:   (optirun) `roslaunch baxter_variations baxter_on_mobot.launch` Launch multiple nodes, including 6 action servers, 2 services,  and rviz (including trajectory streamers, cartesian planner, rviz, baxter-playfile,  triad_display, object-grabber, object-finder and coordinator).  Sameas coordinator for baxter on pedestal:`roslaunch coordinator coord_vision_manip.launch`Optionally, test with this example client of the coordinator:`rosrun coordinator coordinator_action_client_tester`Start up map server (with starting-pen map), amcl, and move_base with 4 nav config files.  Nearly identicalto nav-launch in Part-4, except do not start up rviz (again):`roslaunch baxter_variations mobot_startup_navstack.launch`



章节目录

第一节 ROS基础

ROS简介:ROS工具和节点

一些ROS概念

写ROS节点

一些更多的Ros工具:Catkin_Simple,Roslaunch,Rqt_Console和Rosbag

一个最小的仿真器和控制器的例子

使用包

消息,类和服务器

定义自定义消息

ROS服务介绍

在ROS中使用C ++类

在ROS中创建库模块

操作服务器和操作客户端简介

参数服务器简介

使用包

第二节 ROS中的仿真和可视化

ROS仿真

简单的二维机器人仿真器

动态仿真建模

统一机器人描述格式

Gazebo介绍

最小联合控制器

使用Gazebo插件进行联合伺服控制

构建移动机器人模型

模拟移动机器人模型

组合机器人模型

使用包

ROS中的坐标变换(TF)

ROS的坐标变换简介

转换监听器

使用特征库

转换ROS数据类型

使用包

ROS中的感知和可视化

标记和互动标记在Rviz

在Rviz中显示传感器值

使用包

第三节 在ROS中使用相机处理

投影变换成相机坐标

本机相机校准

立体相机的内在校准

使用Opencv与Ros

使用包

深度成像和点云

扫描雷达的深度

深度从立体相机

深度相机

使用包

点云处理

一个简单的点云显示节点

从磁盘加载和显示点云图像

将发布的点云图像保存到磁盘

用PCL方法解释点云图像

对象查找器

第四节 ROS中的移动机器人

移动机器人运动控制

期望状态生成

机器人状态估计

差速驱动转向算法

指导地图坐标

使用包

移动机器人导航

地图制作

路径规划

移动基础客户端示例

修改导航包

使用包

第五节 ROS中的机器人

低级控制

一维,棱镜 - 联合机器人模型

示例位置控制器

示例速度控制器

示例力控制器

机器人臂的轨迹信息用于7-Dof臂的轨迹插补动作服务器

使用包

机器人臂运动学

正向运动学

反向运动学

使用包

手臂运动规划

笛卡尔运动规划

联合空间规划动态规划

笛卡尔运动动作服务器

使用Baxter模拟器进行臂控制

运行百特模拟器

巴克斯特联合会议题目

百特的夹爪

头盘控制

指挥巴克斯特接头

使用ROS联合轨迹控制器

联合空间记录和播放节点

巴克斯特运动学

百特笛卡尔移动

使用包

对象抓取包

对象抓取代码组织

对象操作查询服务

通用抓爪服务

对象抓取动作服务器

示例对象抓取操作客户端

使用包

第六节 系统集成和高层管理

基于感知的操纵

外部相机校准

综合感知和操纵

移动操纵

移动机器人模型

移动操纵

使用包

结论


----