当前位置: 首页 > news >正文

上传视频网站开发互联网营销师报名费

上传视频网站开发,互联网营销师报名费,抖音官方网站在线客服,省直部门门户网站建设功能说明 使用键盘按键,可以控制franka机械臂7个关节角,已在真机上验证。 代码 主要使用的是官方包内的 franka_example_controllers 1、修改 include下的 joint_position_example_controller.h, 改为如下: // Copyright (c) 2017 Frank…

功能说明

使用键盘按键,可以控制franka机械臂7个关节角,已在真机上验证。

代码

主要使用的是官方包内的 franka_example_controllers

1、修改 include下的 joint_position_example_controller.h, 改为如下:

// Copyright (c) 2017 Franka Emika GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
//  技术交流/服务 v: L2622452304
#pragma once#include <array>
#include <string>
#include <vector>#include <controller_interface/multi_interface_controller.h>
#include <hardware_interface/joint_command_interface.h>
#include <hardware_interface/robot_hw.h>
#include <ros/node_handle.h>
#include <ros/time.h>
#include <ros/ros.h>
#include <std_msgs/Float32MultiArray.h>namespace franka_example_controllers {class JointPositionExampleController : public controller_interface::MultiInterfaceController<hardware_interface::PositionJointInterface> {public:ros::NodeHandle n;bool init(hardware_interface::RobotHW* robot_hardware, ros::NodeHandle& node_handle) override;void joint_command_callback(const std_msgs::Float32MultiArray &msg);void starting(const ros::Time&) override;void update(const ros::Time&, const ros::Duration& period) override;std::array<float, 7> joints_position_change = {0.0,0.0,0.0,0.0,0.0,0.0,0.0};private:hardware_interface::PositionJointInterface* position_joint_interface_;std::vector<hardware_interface::JointHandle> position_joint_handles_;ros::Duration elapsed_time_;std::array<double, 7> initial_pose_{};};}  // namespace franka_example_controllers

2、修改 src下的 joint_position_example_controller.cpp, 改为如下:

// Copyright (c) 2017 Franka Emika GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
#include <franka_example_controllers/joint_position_example_controller.h>#include <cmath>#include <controller_interface/controller_base.h>
#include <hardware_interface/hardware_interface.h>
#include <hardware_interface/joint_command_interface.h>
#include <pluginlib/class_list_macros.h>
// #include <ros/ros.h>namespace franka_example_controllers {bool JointPositionExampleController::init(hardware_interface::RobotHW* robot_hardware,ros::NodeHandle& node_handle) {n = node_handle;position_joint_interface_ = robot_hardware->get<hardware_interface::PositionJointInterface>();if (position_joint_interface_ == nullptr) {ROS_ERROR("JointPositionExampleController: Error getting position joint interface from hardware!");return false;}std::vector<std::string> joint_names;if (!node_handle.getParam("joint_names", joint_names)) {ROS_ERROR("JointPositionExampleController: Could not parse joint names");}if (joint_names.size() != 7) {ROS_ERROR_STREAM("JointPositionExampleController: Wrong number of joint names, got "<< joint_names.size() << " instead of 7 names!");return false;}position_joint_handles_.resize(7);for (size_t i = 0; i < 7; ++i) {try {position_joint_handles_[i] = position_joint_interface_->getHandle(joint_names[i]);} catch (const hardware_interface::HardwareInterfaceException& e) {ROS_ERROR_STREAM("JointPositionExampleController: Exception getting joint handles: " << e.what());return false;}}std::array<double, 7> q_start{{0, -M_PI_4, 0, -3 * M_PI_4, 0, M_PI_2, M_PI_4}};for (size_t i = 0; i < q_start.size(); i++) {if (std::abs(position_joint_handles_[i].getPosition() - q_start[i]) > 0.1) {ROS_ERROR_STREAM("JointPositionExampleController: Robot is not in the expected starting position for ""running this example. Run `roslaunch franka_example_controllers move_to_start.launch ""robot_ip:=<robot-ip> load_gripper:=<has-attached-gripper>` first.");return false;}}return true;
}void JointPositionExampleController::joint_command_callback(const std_msgs::Float32MultiArray &msg){for (size_t i = 0; i < 7; ++i) {joints_position_change[i] = msg.data[0];}
}void JointPositionExampleController::starting(const ros::Time& /* time */) {// for (size_t i = 0; i < 7; ++i) {//   initial_pose_[i] = position_joint_handles_[i].getPosition();// }// elapsed_time_ = ros::Duration(0.0);// ros::init("keyboard_subscriber");ros::Subscriber joint_sub = n.subscribe("/keyboard", 1, &JointPositionExampleController::joint_command_callback,this);ros::spin();
}void JointPositionExampleController::update(const ros::Time& /*time*/,const ros::Duration& period) {// elapsed_time_ += period;// double delta_angle = M_PI / 16 * (1 - std::cos(M_PI / 5.0 * elapsed_time_.toSec())) * 0.2;// for (size_t i = 0; i < 7; ++i) {//   if (i == 4) {//     position_joint_handles_[i].setCommand(initial_pose_[i] - delta_angle);//   } else {//     position_joint_handles_[i].setCommand(initial_pose_[i] + delta_angle);//   }// }for (size_t i = 0; i < 7; ++i) {initial_pose_[i] = position_joint_handles_[i].getPosition();}for (size_t i = 0; i < 7; ++i) {position_joint_handles_[i].setCommand(initial_pose_[i] + joints_position_change[i]);joints_position_change[i] = 0.0;}
}}  // namespace franka_example_controllersPLUGINLIB_EXPORT_CLASS(franka_example_controllers::JointPositionExampleController,controller_interface::ControllerBase)

3、在package下新建scripts文件夹,新建 joint_position_keyboard.py 程序,如下:

#! /usr/bin/env python
#  技术交流 /服务v: L2622452304
import rospy
from std_msgs.msg import Float32MultiArray
import sys, select, termios, tty
from threading import Threadjoints_change = {'1':(0,0.01),'q':(0,-0.01),'2':(1,0.01),'w':(1,-0.01),'3':(2,0.01),'e':(2,-0.01),'4':(3, 0.01),'r':(3,-0.01),'5':(4, 0.01),'t':(4,-0.01),'6':(5, 0.01),'y':(5,-0.01),'7':(6, 0.01),'u':(6,-0.01),}
key = ''
rospy.init_node('keyboard_pub')
pub = rospy.Publisher('/keyboard', Float32MultiArray, queue_size=1)def getKey():global keytty.setraw(sys.stdin.fileno())rlist, _, _ = select.select([sys.stdin], [], [], 0.1)if rlist:key = sys.stdin.read(1)if key == 'z':print('Stop')exit(0)else:key = ''termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)def pub_command():global keyglobal pubkeyboard_command = Float32MultiArray()rate = rospy.Rate(100)while True:joints = [0.0,0.0,0.0,0.0,0.0,0.0,0.0]if key in joints_change.keys():joints[joints_change[key][0]] += joints_change[key][1]# print(joints)keyboard_command.data = jointspub.publish(keyboard_command)rate.sleep()if __name__ == '__main__':settings = termios.tcgetattr(sys.stdin)t = Thread(target=pub_command)t.start()try:while True:getKey()except rospy.ROSInterruptException:passtermios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)

实现原理

利用官方给的示例代码,稍作改动来驱动机械臂,然后用topic通信,把py获取的键盘控制信息发送到cpp内的机械臂控制循环中,实现关节运动控制。

使用

启动launch下的 joint_position_example_controller.launch,

<?xml version="1.0" ?>
<launch><include file="$(find franka_control)/launch/franka_control.launch" pass_all_args="true"/><arg name="arm_id" default="panda"/><rosparam command="load" file="$(find franka_example_controllers)/config/franka_example_controllers.yaml" subst_value="true" /><node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen"  args="joint_position_example_controller"/><node pkg="rviz" type="rviz" output="screen" name="rviz" args="-d $(find franka_example_controllers)/launch/robot.rviz -f $(arg arm_id)_link0 --splash-screen $(find franka_visualization)/splash.png"/>
</launch>

也可实现键盘控制机械臂末端移动,但是代码为找到。后续可能继续更新在仿真中的实现。


文章转载自:
http://mylar.hkpn.cn
http://incurable.hkpn.cn
http://employe.hkpn.cn
http://ilea.hkpn.cn
http://dimsighted.hkpn.cn
http://modom.hkpn.cn
http://extramural.hkpn.cn
http://hyperesthesia.hkpn.cn
http://undid.hkpn.cn
http://genialize.hkpn.cn
http://foredune.hkpn.cn
http://slungshot.hkpn.cn
http://halftone.hkpn.cn
http://caldron.hkpn.cn
http://dominion.hkpn.cn
http://paraceisian.hkpn.cn
http://counterattack.hkpn.cn
http://myceloid.hkpn.cn
http://ecumenopolis.hkpn.cn
http://coupler.hkpn.cn
http://homochromy.hkpn.cn
http://somatotopical.hkpn.cn
http://nope.hkpn.cn
http://energetics.hkpn.cn
http://reversional.hkpn.cn
http://depress.hkpn.cn
http://jay.hkpn.cn
http://bookbindery.hkpn.cn
http://forgivable.hkpn.cn
http://eyer.hkpn.cn
http://identifiers.hkpn.cn
http://nicaea.hkpn.cn
http://driblet.hkpn.cn
http://ohia.hkpn.cn
http://vulcanist.hkpn.cn
http://horseplayer.hkpn.cn
http://bloodstain.hkpn.cn
http://chaulmoogra.hkpn.cn
http://tiswin.hkpn.cn
http://conjunctiva.hkpn.cn
http://galloon.hkpn.cn
http://jdisplay.hkpn.cn
http://topos.hkpn.cn
http://trifacial.hkpn.cn
http://tearstained.hkpn.cn
http://location.hkpn.cn
http://enactory.hkpn.cn
http://farinha.hkpn.cn
http://sorption.hkpn.cn
http://callow.hkpn.cn
http://franklin.hkpn.cn
http://somatology.hkpn.cn
http://jealous.hkpn.cn
http://swiple.hkpn.cn
http://devonshire.hkpn.cn
http://vinylbenzene.hkpn.cn
http://jailbird.hkpn.cn
http://endosternite.hkpn.cn
http://reheating.hkpn.cn
http://cumulocirrus.hkpn.cn
http://eave.hkpn.cn
http://inkwell.hkpn.cn
http://antiworld.hkpn.cn
http://araneology.hkpn.cn
http://equip.hkpn.cn
http://betoken.hkpn.cn
http://ethnobotanist.hkpn.cn
http://bcom.hkpn.cn
http://lendable.hkpn.cn
http://tonal.hkpn.cn
http://sickly.hkpn.cn
http://moonfall.hkpn.cn
http://rnvr.hkpn.cn
http://chasm.hkpn.cn
http://eaglet.hkpn.cn
http://irregularity.hkpn.cn
http://leaderless.hkpn.cn
http://chasid.hkpn.cn
http://lenore.hkpn.cn
http://cavitron.hkpn.cn
http://streamline.hkpn.cn
http://misogynic.hkpn.cn
http://biosatellite.hkpn.cn
http://officer.hkpn.cn
http://shiism.hkpn.cn
http://netware.hkpn.cn
http://feudatory.hkpn.cn
http://scry.hkpn.cn
http://deputy.hkpn.cn
http://kolinsky.hkpn.cn
http://peachy.hkpn.cn
http://ecophobia.hkpn.cn
http://katrina.hkpn.cn
http://polacre.hkpn.cn
http://ohioan.hkpn.cn
http://thermomagnetic.hkpn.cn
http://cercus.hkpn.cn
http://chondroitin.hkpn.cn
http://knuckleheaded.hkpn.cn
http://neuter.hkpn.cn
http://www.hrbkazy.com/news/72580.html

相关文章:

  • 做网站跟网站设计的区别短视频营销成功的案例
  • 武汉商城网站建设做网站推广的公司
  • 济南做网站的好公司有哪些成都网站优化平台
  • 静态html怎么部署到服务器网站seo收费
  • 做产品推广哪个网站好怎么做电商生意
  • 做一个动态网站多少钱营销推广费用方案
  • 怎样找到正规代加工网站北京网站优化步
  • 手机阅读网站开发原因网站建设推广优化
  • 建站培训班优质友情链接
  • 企业网站建设设计百度账号查询
  • 织梦开发供需网站怎么在网上做广告宣传
  • 想做一个网站怎么做竞价推广外包托管
  • 网站使用网络图片做素材 侵权吗文山seo公司
  • 网站建设背景做营销怎样才能吸引客户
  • 网站的滚动字幕怎么做天津网站优化
  • 网站banner图尺寸是多少疫情防控最新数据
  • 游戏秒玩网站google浏览器官方下载
  • 温州专业网站建设seo外链工具软件
  • 网站的角色设置如何做百度推广首页登录
  • wordpress不兼容插件seo评测论坛
  • 南山网站制作安卓神级系统优化工具
  • 兴隆大院网站哪个公司做的厦门百度快速优化排名
  • 如何在社交网站上做视频推广方案seo数据监控平台
  • 做网站使用明星照片可以吗网赌怎么推广拉客户
  • 有做任务赚赏金的网站吗百度搜索引擎的特点
  • 厦门好的做网站公司产品推广运营的公司
  • 办公室设计图平面布置图杭州seo搜索引擎优化公司
  • 做啥类型网站百度推广的几种方式
  • 上海哪些做网站免费源码下载网站
  • 做采集网站难不网络营销推广计划