aaa
Dependencies: mbed BNO055_fusion Adafruit_GFX ros_lib_kinetic
Diff: myCan.h
- Revision:
- 5:e678f1ac6cdc
- Parent:
- 4:cf1a4e503974
- Child:
- 6:20a32baeff79
diff -r cf1a4e503974 -r e678f1ac6cdc myCan.h --- a/myCan.h Wed Dec 12 03:35:52 2018 +0000 +++ b/myCan.h Tue Dec 18 21:00:30 2018 +0000 @@ -1,9 +1,11 @@ + #ifndef _MY_CAN_H_ #define _MY_CAN_H_ #include <mbed.h> #include "odom.h" #include "myRos.h" +#include "type.h" /* CAN_GLOBAL DEFINE BEGIN */ @@ -14,19 +16,24 @@ struct{ uint8_t frameName; - uint32_t id : 24; + uint8_t id; FIXED_NUM_16 x; FIXED_NUM_16 y; + uint32_t unuse : 16; }data; }can_odom_xy_t; +//pose initializeとフレームを共用にするためcourt_colorを入れた +//通常のデータ送信では使わない typedef union{ char array[8]; struct{ uint8_t frameName; - uint32_t id : 24; + uint8_t id; float angle; + uint8_t court_color; + uint32_t unuse : 8; }data; }can_odom_angle_t; @@ -43,15 +50,11 @@ #define CAN_FILTER_SND_MASK (0x0078) #define CAN_FILTER_DST_MASK (0x0780) -#define ODOM_RESET (0xa0) -#define ODOM_BOARD_RESET (0xa1) -#define ODOM_BNO_RESET (0xa2) -#define ODOM_ROS_ENABLE (0xa3) -#define ODOM_SEQUENTIAL_START (0xa4) -#define ODOM_SEQUENTIAL_STOP (0xa5) -#define ODOM_DATA_XY (0xa6) -#define ODOM_DATA_ANGLE (0xa7) -#define ODOM_SET_ANGLE (0xa8) +#define ODOM_DATA_XY (0xa0) +#define ODOM_DATA_ANGLE (0xa1) +#define ODOM_SET_INITIAL_XY (0xa2) +#define ODOM_SET_INITIAL_ANGLE (0xa3) +#define ODOM_RESET (0xa4) /* CAN_GLOBAL DEFINE END */ class My_Can : public Odom_Abstract, CAN @@ -59,13 +62,13 @@ private: FunctionPointer amcl_initialize_; FunctionPointer led_toggle_; + + Timer timer_; public: My_Can(Odom *odom) : Odom_Abstract(odom), CAN(PB_8, PB_9, 1000000){ filter(CreateSid(0, ID_MAIN, ID_ODOM), CAN_FILTER_SND_MASK | CAN_FILTER_DST_MASK, CANStandard); - - Vec3f initialpose(-0.5, 0.5, 0); - set_initial_pose(initialpose); + timer_.start(); } void initialize_amcl_attach(My_Ros *object, void (My_Ros::*member)(void)){ @@ -77,10 +80,13 @@ } void test(){ - led_toggle_.call(); +// led_toggle_.call(); } private: + + void receive(); + void check_initial_frame(uint8_t *data); FIXED_NUM_16 EncodeFixedNumber(float fn){ uint16_t sign_part = 0;