mirror of
https://github.com/6-robot/wpb_home.git
synced 2025-09-15 12:58:59 +08:00
mani_test
This commit is contained in:
parent
d7443d6ee9
commit
b36184e35d
@ -232,7 +232,6 @@ target_link_libraries(wpb_home_lidar_filter
|
|||||||
)
|
)
|
||||||
|
|
||||||
## Declare a C++ executable
|
## Declare a C++ executable
|
||||||
|
|
||||||
add_executable(wpb_home_imu_tf
|
add_executable(wpb_home_imu_tf
|
||||||
src/wpb_home_imu_tf.cpp
|
src/wpb_home_imu_tf.cpp
|
||||||
)
|
)
|
||||||
@ -240,3 +239,14 @@ add_dependencies(wpb_home_imu_tf ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EX
|
|||||||
target_link_libraries(wpb_home_imu_tf
|
target_link_libraries(wpb_home_imu_tf
|
||||||
${catkin_LIBRARIES}
|
${catkin_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
## Declare a C++ executable
|
||||||
|
add_executable(wpb_home_test_mani
|
||||||
|
src/wpb_home_test_mani.cpp
|
||||||
|
src/driver/SerialCom.cpp
|
||||||
|
src/driver/WPB_Home_driver.cpp
|
||||||
|
)
|
||||||
|
add_dependencies(wpb_home_test_mani ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
|
||||||
|
target_link_libraries(wpb_home_test_mani
|
||||||
|
${catkin_LIBRARIES}
|
||||||
|
)
|
||||||
|
|||||||
@ -47,6 +47,7 @@ public:
|
|||||||
void Velocity(float inX, float inY, float inAngular);
|
void Velocity(float inX, float inY, float inAngular);
|
||||||
void SendMotors(int inMotor1, int inMotor2, int inMotor3, int inMotor4);
|
void SendMotors(int inMotor1, int inMotor2, int inMotor3, int inMotor4);
|
||||||
float GetYaw();
|
float GetYaw();
|
||||||
|
void ManiCtrl(float inHeight, int inRaiseSpeed, float inGripper, int inGripperSpeed);
|
||||||
float fLinearAccLimit;
|
float fLinearAccLimit;
|
||||||
float fAngularAccLimit;
|
float fAngularAccLimit;
|
||||||
|
|
||||||
@ -87,4 +88,6 @@ protected:
|
|||||||
void m_ParseFrame();
|
void m_ParseFrame();
|
||||||
void m_DisRecv();
|
void m_DisRecv();
|
||||||
int GenCmd(int inBuffOffset, int inDevID, int inModule, int inMethod, unsigned char* inData, int inDataLen);
|
int GenCmd(int inBuffOffset, int inDevID, int inModule, int inMethod, unsigned char* inData, int inDataLen);
|
||||||
|
void MotorCmd(int inMethod, int inID1, int inValue1, int inID2, int inValue2);
|
||||||
|
void MotorCmd2(int inMethod, int inID1, int inValue1_1, int inValue1_2, int inID2, int inValue2_1, int inValue2_2);
|
||||||
};
|
};
|
||||||
8
wpb_home_bringup/launch/mani_test.launch
Normal file
8
wpb_home_bringup/launch/mani_test.launch
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<launch>
|
||||||
|
|
||||||
|
<!-- wpb_home mani test-->
|
||||||
|
<node pkg="wpb_home_bringup" type="wpb_home_test_mani" name="wpb_home_test_mani" output="screen">
|
||||||
|
<param name="serial_port" type="string" value="/dev/ftdi"/>
|
||||||
|
</node>
|
||||||
|
|
||||||
|
</launch>
|
||||||
@ -315,3 +315,44 @@ float CWPB_Home_driver::GetYaw()
|
|||||||
float diffYaw = fCurYaw - fFirstYaw;
|
float diffYaw = fCurYaw - fFirstYaw;
|
||||||
return diffYaw;
|
return diffYaw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CWPB_Home_driver::MotorCmd(int inMethod, int inID1, int inValue1, int inID2, int inValue2)
|
||||||
|
{
|
||||||
|
static unsigned char arMotorSpeedData[12];
|
||||||
|
m_Split2Bytes(arMotorSpeedData,inID1);
|
||||||
|
m_Split4Bytes(arMotorSpeedData + 2, inValue1);
|
||||||
|
|
||||||
|
m_Split2Bytes(arMotorSpeedData + 6, inID2);
|
||||||
|
m_Split4Bytes(arMotorSpeedData + 8, inValue2);
|
||||||
|
int nCmdLenght = GenCmd(0, 0x40, 0x08, inMethod, arMotorSpeedData, 12);
|
||||||
|
Send(m_SendBuf, nCmdLenght);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CWPB_Home_driver::MotorCmd2(int inMethod, int inID1, int inValue1_1, int inValue1_2, int inID2, int inValue2_1, int inValue2_2)
|
||||||
|
{
|
||||||
|
static unsigned char arMotorCmdData[20];
|
||||||
|
m_Split2Bytes(arMotorCmdData, inID1);
|
||||||
|
m_Split4Bytes(arMotorCmdData + 2, inValue1_1);
|
||||||
|
m_Split4Bytes(arMotorCmdData + 6, inValue1_2);
|
||||||
|
|
||||||
|
m_Split2Bytes(arMotorCmdData + 10, inID2);
|
||||||
|
m_Split4Bytes(arMotorCmdData + 12, inValue2_1);
|
||||||
|
m_Split4Bytes(arMotorCmdData + 16, inValue2_2);
|
||||||
|
int nCmdLenght = GenCmd(0, 0x40, 0x08, inMethod, arMotorCmdData, 20);
|
||||||
|
Send(m_SendBuf, nCmdLenght);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CWPB_Home_driver::ManiCtrl(float inHeight, int inRaiseSpeed, float inGripper, int inGripperSpeed)
|
||||||
|
{
|
||||||
|
if(inHeight > 0.01)
|
||||||
|
{
|
||||||
|
MotorCmd2(0x63, 5, inRaiseSpeed, inHeight, 6, inGripperSpeed, inGripper);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 折叠
|
||||||
|
MotorCmd2(0x64, 5, inRaiseSpeed, inHeight, 6, inGripperSpeed, inGripper);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
125
wpb_home_bringup/src/wpb_home_test_mani.cpp
Normal file
125
wpb_home_bringup/src/wpb_home_test_mani.cpp
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/*********************************************************************
|
||||||
|
* Software License Agreement (BSD License)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017-2020, Waterplus http://www.6-robot.com
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the following
|
||||||
|
* disclaimer in the documentation and/or other materials provided
|
||||||
|
* with the distribution.
|
||||||
|
* * Neither the name of the WaterPlus nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* FOOTPRINTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*********************************************************************/
|
||||||
|
/*!******************************************************************
|
||||||
|
@author ZhangWanjie
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
#include <ros/ros.h>
|
||||||
|
#include "driver/WPB_Home_driver.h"
|
||||||
|
|
||||||
|
#define WPBH_TEST_MANI_ZERO 0
|
||||||
|
#define WPBH_TEST_MANI_DOWN 1
|
||||||
|
#define WPBH_TEST_MANI_UP 2
|
||||||
|
#define WPBH_TEST_MANI_FOLD 3
|
||||||
|
|
||||||
|
#define CMD_WAIT_SEC 6
|
||||||
|
|
||||||
|
static int nState = WPBH_TEST_MANI_ZERO;
|
||||||
|
static int nCount = 0;
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
ros::init(argc,argv,"wpb_home_test_mani");
|
||||||
|
ros::NodeHandle n;
|
||||||
|
|
||||||
|
ROS_WARN("[TEST] Manipulator...");
|
||||||
|
CWPB_Home_driver m_wpb_home;
|
||||||
|
ros::NodeHandle n_param("~");
|
||||||
|
std::string strSerialPort;
|
||||||
|
n_param.param<std::string>("serial_port", strSerialPort, "/dev/ttyUSB0");
|
||||||
|
m_wpb_home.Open(strSerialPort.c_str(),115200);
|
||||||
|
|
||||||
|
ros::Rate r(1);
|
||||||
|
|
||||||
|
while(ros::ok())
|
||||||
|
{
|
||||||
|
switch(nState)
|
||||||
|
{
|
||||||
|
case WPBH_TEST_MANI_ZERO: //收起状态,先变成初始状态
|
||||||
|
ROS_INFO("[Mani] ZERO -> DOWN... %d",nCount);
|
||||||
|
if (nCount == 0)
|
||||||
|
{
|
||||||
|
m_wpb_home.ManiCtrl( 11200, 1000, 50000, 1000);
|
||||||
|
}
|
||||||
|
nCount ++;
|
||||||
|
if(nCount >= CMD_WAIT_SEC)
|
||||||
|
{
|
||||||
|
nState = WPBH_TEST_MANI_DOWN;
|
||||||
|
nCount = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WPBH_TEST_MANI_DOWN:
|
||||||
|
ROS_INFO("[Mani] DOWN -> UP ... %d",nCount);
|
||||||
|
if (nCount == 0)
|
||||||
|
{
|
||||||
|
m_wpb_home.ManiCtrl( 55000, 1000, 0, 1000);
|
||||||
|
}
|
||||||
|
nCount ++;
|
||||||
|
if(nCount >= CMD_WAIT_SEC)
|
||||||
|
{
|
||||||
|
nState = WPBH_TEST_MANI_UP;
|
||||||
|
nCount = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WPBH_TEST_MANI_UP:
|
||||||
|
ROS_INFO("[Mani] UP -> DOWN ... %d",nCount);
|
||||||
|
if (nCount == 0)
|
||||||
|
{
|
||||||
|
m_wpb_home.ManiCtrl( 11200, 1000, 0, 1000);
|
||||||
|
}
|
||||||
|
nCount ++;
|
||||||
|
if(nCount >= CMD_WAIT_SEC)
|
||||||
|
{
|
||||||
|
nState = WPBH_TEST_MANI_FOLD;
|
||||||
|
nCount = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WPBH_TEST_MANI_FOLD:
|
||||||
|
ROS_INFO("[Mani] DOWN -> ZERO ... %d",nCount);
|
||||||
|
if (nCount == 0)
|
||||||
|
{
|
||||||
|
m_wpb_home.ManiCtrl( 0, 1000, 0, 1000);
|
||||||
|
}
|
||||||
|
nCount ++;
|
||||||
|
if(nCount >= CMD_WAIT_SEC)
|
||||||
|
{
|
||||||
|
nState = WPBH_TEST_MANI_ZERO;
|
||||||
|
nCount = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
r.sleep();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -51,9 +51,12 @@ int main(int argc, char** argv)
|
|||||||
ros::init(argc,argv,"wpb_home_test_motors");
|
ros::init(argc,argv,"wpb_home_test_motors");
|
||||||
ros::NodeHandle n;
|
ros::NodeHandle n;
|
||||||
|
|
||||||
ROS_INFO("TEST Start...");
|
ROS_INFO("[TEST] Motors...");
|
||||||
CWPB_Home_driver m_wpb_home;
|
CWPB_Home_driver m_wpb_home;
|
||||||
m_wpb_home.Open("/dev/ttyUSB1",115200);
|
ros::NodeHandle n_param("~");
|
||||||
|
std::string strSerialPort;
|
||||||
|
n_param.param<std::string>("serial_port", strSerialPort, "/dev/ttyUSB0");
|
||||||
|
m_wpb_home.Open(strSerialPort.c_str(),115200);
|
||||||
|
|
||||||
int nTest = TEST_READY;
|
int nTest = TEST_READY;
|
||||||
ros::Rate r(0.3);
|
ros::Rate r(0.3);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user