Coder Social home page Coder Social logo

skku-eslab / ant Goto Github PK

View Code? Open in Web Editor NEW
26.0 26.0 30.0 61.65 MB

ANT (AI-based Networked Things) Framework

License: Apache License 2.0

CMake 0.05% C 89.20% C++ 0.66% Python 1.35% JavaScript 2.39% Makefile 3.39% Shell 0.05% Java 0.69% Dockerfile 0.01% HTML 1.87% CSS 0.10% Assembly 0.18% TypeScript 0.05%
deep-learning edge-computing framework internet-of-things machine-learning

ant's People

Contributors

alpakamk2 avatar esevan avatar gh-jo avatar gleegend avatar gusghrhkr avatar hoseung2 avatar jhcrow avatar jong1prk avatar lee-gwang avatar leehayun avatar ls4154 avatar minusjet avatar podossiu avatar redcarrottt avatar shaotuanjie avatar sinban04 avatar sonyeo4ever avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ant's Issues

Crash on initializing Wi-fi Direct and CameraViewer using Raspberry Pi 3

When I run ANT on Raspberry Pi 3 and launch Camera Viewer, I can find a crash on initializing Wi-fi Direct.

The following message is the full crash log.

redcarrottt@raspberrypi:~ $ sudo run_ant
[SystemServer] args: Namespace(debugappcore=False, debugapps=False)
[SystemServer] Initializing ANT daemons...
ipcrm: invalid key (9447)
ipcrm: invalid key (5315)
ipcrm: invalid key (4941)
ipcrm: invalid key (49411)
ipcrm: invalid key (49441)
ipcrm: invalid key (4944)
ipcrm: invalid key (9948)
[SystemServer] App-core Framework Daemon process is executed (pid 1387)
[SystemServer] Camera Framework Daemon process is executed (pid 1388)
[SystemServer] Sensor Framework Daemon process is executed (pid 1389)
Sensor head is not initilized! Perform initilizing
[SM] ACC is added [Total number of sensor :1 ]
[SM] TEMP is added [Total number of sensor :2 ]
[SM] SOUND is added [Total number of sensor :3 ]
Error while reading symbol: /etc/ant/sensor-drivers/libsensors.so: undefined symbol: LIGHT_start
[SystemServer] An ANT process (pid 1389) is dead.
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraManager.cpp: [main():137]:  ANT Camera Manager Start!
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraManager.cpp: [start():39]:  Camera Config file path : /etc/ant/config/camera-config.json
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [initializeDirs():63]:  UserAppsDir=/etc/ant/apps/user
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [initializeDirs():71]:  SystemAppsDir=/etc/ant/apps/system
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [initializeDirs():76]:  AppListDB=/etc/ant/apps/AppListDB.sqlite
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [initializeDirs():93]:  DataDir=/etc/ant/data
[WARN] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [initializeDirs():109]:  Cannot read ANT_TEMP_DIR, so ANT_TEMP_DIR is set as /etc/ant/data/temp
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [initializeDirs():119]:  TempDir=/etc/ant/data/temp
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/DbusChannel.cpp: [initializeDbus():42]:  DbusChannel: Start dbus initializing
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/DbusChannel.cpp: [initializeDbus():64]:  We now own the name org.ant.dbuschannel!
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/DbusChannel.cpp: [listeningLoop():142]:  DbusChannel's Listening Loop: Start dbus-enabled glib main loop
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/DbusChannel.cpp: [listeningLoop():151]:  [VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [addRoutingEntry():32]:  Entry (/thing/apps -> DbusChannel) is added to MessageRouterTable
Dbus response ready
CMFW(turnOn):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(36)	> Enter=================
CMFW(turnOn):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(39)	> ==================Exit
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [start():128]:  Start CommChannel
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(39)	> Enter=================
CMFW(bindDynamically):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(143)	> Enter=================
CMFW(bindDynamically):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(158)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(64)	> Bound BT socket 6 to BT port 1
CMFW(registerBluetoothService):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(171)	> Enter=================
CMFW(registerBluetoothService):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(246)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(88)	> Bluetooth port listening success
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(90)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(39)	> Enter=================
CMFW(bindDynamically):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(143)	> Enter=================
CMFW(bindDynamically):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(158)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(64)	> Bound BT socket 8 to BT port 2
CMFW(registerBluetoothService):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(171)	> Enter=================
CMFW(registerBluetoothService):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(246)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(88)	> Bluetooth port listening success
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(90)	> ==================Exit
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(48)	> Enter=================
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(55)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(74)	> Enter=================
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(95)	> Enter=================
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(48)	> Enter=================
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(55)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(74)	> Enter=================
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(95)	> Enter=================
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [addRoutingEntry():32]:  Entry (/comp0 -> CommChannel) is added to MessageRouterTable
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [addRoutingEntry():32]:  Entry (/thing/appcore -> LocalChannel) is added to MessageRouterTable
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():58]:  Number of camera = 1
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():59]:  Recording = queue ! h264parse ! mp4mux ! filesink name=sink_%u sync=f
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():60]:  Snapshot = queue ! jpegenc ! image/jpeg,width=1280,height=720,framerate=1/1 ! appsink name=sink_%u
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():61]:  Streaming = queue ! h264parse ! rtph264pay pt=96 config-interval=1 ! gdppay ! tcpserversink name=sink_%u sync=f
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():62]:  Pre-Recording Init = queue min-threshold-time=10000000000 max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! valve drop=true ! tee name=sink_%u
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():63]:  Pre-Recording = queue ! h264parse ! mp4mux ! filesink name=sink_%u sync=f
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():64]:  OpenCV = queue ! video/x-raw,width=1280,height=720,framerate=30/1,format=I420 ! videoconvert ! video/x-raw,format=BGRx,width=640,height=480 ! appsink name=sink_%u
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraManager.cpp: [start():62]:  Camera device initialization (0)
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraConfigParser.cpp: [getMainBinById():76]:  main_0 = rpicamsrc ! video/x-raw,width=1280,height=720,framerate=30/1,format=I420 ! tee name=RAW_TEE ! queue ! tee name=MAIN_TEE ! queue ! omxh264enc ! tee name=H264_TEE ! queue ! fakesink
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  capsfilter0
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  fakesink0
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  queue2
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  H264_TEE
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():40]:  Main 0 bin has h264 tee
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  omxh264enc-omxh264enc0
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  queue1
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  MAIN_TEE
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():36]:  Main 0 bin has main tee
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  queue0
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  RAW_TEE
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():32]:  Main 0 bin has raw tee
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraDevice.cpp: [CameraDevice():29]:  rpicamsrc0
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraCommunicator.cpp: [initCommunication():16]:  D-Bus initialization
[LOG] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraManager.cpp: [msg_dbus_filter():158]:  D-Bus message received
[WARN] CAMERA FW:/home/redcarrottt/ant/framework/camera/src/CameraManager.cpp: [msg_dbus_filter():190]:  Receive unidentified D-bus message
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(115)	> Bluetooth port accepted
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(118)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Default Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=1 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 1
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(123)	> Read complete: message metadata
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Default Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=1 / flag=96 / payloadSize=119 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 2
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(160)	> Read complete: message data
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [onReceivedRawMessage():273]:  Received raw message from CommChannel: {"messageId":"0","uri":"/thing/appcore","type":"10","isFileAttached":"0","payload":{"commandType":"1","payload":null}} /
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=1387) Route to /thing/appcore(LocalChannel), {
	"messageId":	"0",
	"uri":	"/thing/appcore",
	"type":	"10",
	"isFileAttached":	"0",
	"payload":	{
		"commandType":	"1",
		"payload":	null
	}
}
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Default Port: Waiting to listen message
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [onReceivedMessage():194]:  AppCore command: GetAppList (1)
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=1387) Route to /comp0(CommChannel), {
	"messageId":	"0",
	"uri":	"/comp0",
	"type":	"11",
	"isFileAttached":	"0",
	"payload":	{
		"commandMessageId":	"0",
		"commandType":	"1",
		"payload":	{
			"appList":	[{
					"appId":	"0",
					"appName":	"CameraViewer",
					"isDefaultApp":	"1"
				}, {
					"appId":	"1",
					"appName":	"SensorViewer",
					"isDefaultApp":	"1"
				}]
		}
	}
}
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(307)	> Enter=================
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(319)	> Send message metadata (1)
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=1 / flag=16 / payloadSize=8 / currOffset=0
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(338)	> Send message data (1)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(368)	> sendRawMessage(message): mPayloadSize = 349
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=1 / flag=96 / payloadSize=349 / currOffset=0
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(480)	> Send message done (1)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(481)	> ==================Exit
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=2 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 1
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(123)	> Read complete: message metadata
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Default Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=2 / flag=96 / payloadSize=129 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 2
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(160)	> Read complete: message data
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [onReceivedRawMessage():273]:  Received raw message from CommChannel: {"messageId":"1","uri":"/thing/appcore","type":"10","isFileAttached":"0","payload":{"commandType":"12","payload":{"appId":"0"}}} /
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=1387) Route to /thing/appcore(LocalChannel), {
	"messageId":	"1",
	"uri":	"/thing/appcore",
	"type":	"10",
	"isFileAttached":	"0",
	"payload":	{
		"commandType":	"12",
		"payload":	{
			"appId":	"0"
		}
	}
}
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Default Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=3 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 1
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(123)	> Read complete: message metadata
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Default Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=3 / flag=96 / payloadSize=129 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 2
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(160)	> Read complete: message data
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [onReceivedRawMessage():273]:  Received raw message from CommChannel: {"messageId":"2","uri":"/thing/appcore","type":"10","isFileAttached":"0","payload":{"commandType":"12","payload":{"appId":"1"}}} /
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=1387) Route to /thing/appcore(LocalChannel), {
	"messageId":	"2",
	"uri":	"/thing/appcore",
	"type":	"10",
	"isFileAttached":	"0",
	"payload":	{
		"commandType":	"12",
		"payload":	{
			"appId":	"1"
		}
	}
}
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Default Port: Waiting to listen message
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [onReceivedMessage():238]:  AppCore command: GetAppIcon (12)
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=1387) Route to /comp0(CommChannel), {
	"messageId":	"1",
	"uri":	"/comp0",
	"type":	"11",
	"isFileAttached":	"0",
	"payload":	{
		"commandMessageId":	"1",
		"commandType":	"12"
	}
}
[VERB] APPCORE:/home/redcarrottt/ant/framework/appcore/src/AppCore.cpp: [onReceivedMessage():238]:  AppCore command: GetAppIcon (12)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(307)	> Enter=================
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(319)	> Send message metadata (2)
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=2 / flag=16 / payloadSize=8 / currOffset=0
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=1387) Route to /comp0(CommChannel), {
	"messageId":	"2",
	"uri":	"/comp0",
	"type":	"11",
	"isFileAttached":	"0",
	"payload":	{
		"commandMessageId":	"2",
		"commandType":	"12"
	}
}
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(338)	> Send message data (2)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(368)	> sendRawMessage(message): mPayloadSize = 145
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=2 / flag=96 / payloadSize=145 / currOffset=0
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(480)	> Send message done (2)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(481)	> ==================Exit
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(307)	> Enter=================
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(319)	> Send message metadata (3)
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=3 / flag=16 / payloadSize=8 / currOffset=0
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(338)	> Send message data (3)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(368)	> sendRawMessage(message): mPayloadSize = 145
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=3 / flag=96 / payloadSize=145 / currOffset=0
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(480)	> Send message done (3)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(481)	> ==================Exit
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(115)	> Bluetooth port accepted
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(118)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Control Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=1 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 1
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(123)	> Read complete: message metadata
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Control Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=1 / flag=96 / payloadSize=3 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 2
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(160)	> Read complete: message data
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [onReceivedControlMessage():302]:  Received control message for CommChannel: on
CMFW(turnOn):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(54)	> Enter=================
Selected interface 'wlan0'
OK
/etc/ant/bin/ant_p2p_setup.sh: line 117: /tmp/wifi/wifi-direct/wfd_stat/self: No such file or directory
stopped
cat: /tmp/wifi/wifi-direct/init/self: No such file or directory

/etc/ant/bin/ant_p2p_setup.sh: line 22: [: -eq: unary operator expected
wpa_supplicant v2.6-devel
random: Trying to read entropy from /dev/random
Successfully initialized wpa_supplicant
Initializing interface 'wlan0' conf '/etc/ant/config/p2p.conf' driver 'nl80211' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/ant/config/p2p.conf' -> '/etc/ant/config/p2p.conf'
Reading configuration file '/etc/ant/config/p2p.conf'
ctrl_interface='/var/run/wpa_supplicant'
ap_scan=1
device_name='ANT'
Priority group 0
   id=0 ssid='DIRECT-CS-ANT'
nl80211: TDLS supported
nl80211: Supported cipher 00-0f-ac:1
nl80211: Supported cipher 00-0f-ac:5
nl80211: Supported cipher 00-0f-ac:2
nl80211: Supported cipher 00-0f-ac:4
nl80211: Using driver-based off-channel TX
nl80211: Supported vendor command: vendor_id=0x1018 subcmd=1
nl80211: Use separate P2P group interface (driver advertised support)
nl80211: use P2P_DEVICE support
nl80211: interface wlan0 in phy phy0
nl80211: Set mode ifindex 3 iftype 2 (STATION)
nl80211: Subscribe to mgmt frames with non-AP handle 0x5b9960
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=040a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=040b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=040c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=040d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=090a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=090b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=090c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=090d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=0409506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=7f506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=06
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=0a07
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=0a11
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=1101
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=1102
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=0505
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5b9960 match=0500
rfkill: initial event: idx=0 type=1 op=0 soft=0 hard=0
netlink: Operstate: ifindex=3 linkmode=1 (userspace-control), operstate=5 (IF_OPER_DORMANT)
Add interface wlan0 to a new radio phy0
nl80211: Regulatory information - country=GB (DFS-ETSI)
nl80211: 2402-2482 @ 40 MHz 20 mBm
nl80211: 5170-5250 @ 80 MHz 20 mBm
nl80211: 5250-5330 @ 80 MHz 20 mBm (DFS)
nl80211: 5490-5710 @ 160 MHz 27 mBm (DFS)
nl80211: 57000-66000 @ 2160 MHz 40 mBm
nl80211: Added 802.11b mode based on 802.11g information
wlan0: Own MAC address: b8:27:eb:03:8d:46
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=0 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=1 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=2 set_tx=0 seq_len=0 key_len=0
wpa_driver_nl80211_set_key: ifindex=3 (wlan0) alg=0 addr=(nil) key_idx=3 set_tx=0 seq_len=0 key_len=0
wlan0: RSN: flushing PMKID list in the driver
nl80211: Flush PMKIDs
wlan0: No enabled networks (1 disabled networks)
wlan0: State: DISCONNECTED -> INACTIVE
wlan0: WPS: UUID based on MAC address: 2e907359-9a09-54d7-94f6-0aa2a814d850
ENGINE: Loading dynamic engine
ENGINE: Loading dynamic engine
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: Supplicant port status: Unauthorized
nl80211: Skip set_supp_port(unauthorized) while not associated
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
wlan0: Added interface wlan0
wlan0: State: INACTIVE -> DISCONNECTED
nl80211: Set wlan0 operstate 0->0 (DORMANT)
netlink: Operstate: ifindex=3 linkmode=-1 (no change), operstate=5 (IF_OPER_DORMANT)
nl80211: Create interface iftype 10 (P2P_DEVICE)
nl80211: New P2P Device interface p2p-dev-wlan0 (0x2) created
Initializing interface 'p2p-dev-wlan0' conf '/etc/ant/config/p2p.conf' driver 'nl80211' ctrl_interface '/var/run/wpa_supplicant' bridge 'N/A'
Configuration file '/etc/ant/config/p2p.conf' -> '/etc/ant/config/p2p.conf'
Reading configuration file '/etc/ant/config/p2p.conf'
ctrl_interface='/var/run/wpa_supplicant'
ap_scan=1
device_name='ANT'
Priority group 0
   id=0 ssid='DIRECT-CS-ANT'
nl80211: TDLS supported
nl80211: Supported cipher 00-0f-ac:1
nl80211: Supported cipher 00-0f-ac:5
nl80211: Supported cipher 00-0f-ac:2
nl80211: Supported cipher 00-0f-ac:4
nl80211: Using driver-based off-channel TX
nl80211: Supported vendor command: vendor_id=0x1018 subcmd=1
nl80211: Use separate P2P group interface (driver advertised support)
nl80211: use P2P_DEVICE support
nl80211: interface p2p-dev-wlan0 in phy phy0
nl80211: Set mode ifindex 0 iftype 10 (P2P_DEVICE)
nl80211: Failed to set interface 0 to mode 10: -22 (Invalid argument)
nl80211: Subscribe to mgmt frames with non-AP handle 0x5bee58
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=040a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=040b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=040c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=040d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=090a
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=090b
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=090c
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=090d
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=0409506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=7f506f9a09
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=06
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=0a07
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=0a11
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=1101
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=1102
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=0505
nl80211: Register frame type=0xd0 (WLAN_FC_STYPE_ACTION) nl_handle=0x5bee58 match=0500
nl80211: Use (wlan0) to initialize P2P Device rfkill
rfkill: initial event: idx=0 type=1 op=0 soft=0 hard=0
nl80211: Start P2P Device p2p-dev-wlan0 (0x2): Success
Add interface p2p-dev-wlan0 to existing radio phy0
nl80211: Regulatory information - country=GB (DFS-ETSI)
nl80211: 2402-2482 @ 40 MHz 20 mBm
nl80211: 5170-5250 @ 80 MHz 20 mBm
nl80211: 5250-5330 @ 80 MHz 20 mBm (DFS)
nl80211: 5490-5710 @ 160 MHz 27 mBm (DFS)
nl80211: 57000-66000 @ 2160 MHz 40 mBm
nl80211: Added 802.11b mode based on 802.11g information
p2p-dev-wlan0: Own MAC address: ba:27:eb:03:8d:46
p2p-dev-wlan0: RSN: flushing PMKID list in the driver
nl80211: Flush PMKIDs
p2p-dev-wlan0: State: DISCONNECTED -> INACTIVE
p2p-dev-wlan0: WPS: UUID from the first interface: 2e907359-9a09-54d7-94f6-0aa2a814d850
ENGINE: Loading dynamic engine
ENGINE: Loading dynamic engine
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: Supplicant port status: Unauthorized
nl80211: Skip set_supp_port(unauthorized) while not associated
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
Using existing control interface directory.
P2P: Add operating class 81
P2P: Channels - hexdump(len=13): 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
P2P: Own listen channel: 81:11
P2P: Random operating channel: 81:1
P2P: initialized
P2P: channels: 81:1,2,3,4,5,6,7,8,9,10,11,12,13
P2P: cli_channels:
p2p-dev-wlan0: Added interface p2p-dev-wlan0
p2p-dev-wlan0: State: INACTIVE -> DISCONNECTED
nl80211: Set p2p-dev-wlan0 operstate 0->0 (DORMANT)
netlink: Operstate: ifindex=0 linkmode=-1 (no change), operstate=5 (IF_OPER_DORMANT)
p2p-dev-wlan0: Determining shared radio frequencies (max len 1)
p2p-dev-wlan0: Shared frequencies (len=0): completed iteration
P2P: Add operating class 81
P2P: Channels - hexdump(len=13): 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d
P2P: Update channel list
P2P: channels: 81:1,2,3,4,5,6,7,8,9,10,11,12,13
P2P: cli_channels:
Daemonize..
Selected interface 'p2p-dev-wlan0'
OK
Selected interface 'p2p-wlan0-0'
12345670Started
udhcpd (v1.22.1) started
started
CMFW(turnOn):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(89)	> P2p start!
CMFW(turnOn):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(96)	> Wifi direct turned on
CMFW(turnOn):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(98)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/WifiDirectCommPort.cpp(36)	> Enter=================
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/WifiDirectCommPort.cpp(85)	> Wifi direct port listening success
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/WifiDirectCommPort.cpp(89)	> ==================Exit
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(48)	> Enter=================
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(55)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(74)	> Enter=================
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/WifiDirectCommPort.cpp(94)	> Enter=================
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/WifiDirectCommPort.cpp(98)	> Wifi direct port is now accepting: port = 10001
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(307)	> Enter=================
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(319)	> Send message metadata (1)
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=1 / flag=16 / payloadSize=8 / currOffset=0
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(338)	> Send message data (1)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(368)	> sendRawMessage(message): mPayloadSize = 16
CMFW(toByteArray):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(174)	> write header: id=1 / flag=96 / payloadSize=16 / currOffset=0
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(480)	> Send message done (1)
CMFW(sendRawMessage):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(481)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Control Port: Waiting to listen message
Sending OFFER of 192.168.49.26
Sending ACK to 192.168.49.26
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=2 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 1
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(123)	> Read complete: message metadata
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Control Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(137)	> read header: id=2 / flag=96 / payloadSize=4 / currOffset=0
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(104)	> Expected type: 2
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(160)	> Read complete: message data
[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [onReceivedControlMessage():302]:  Received control message for CommChannel: off
CMFW(stopListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(59)	> Enter=================
CMFW(stopListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(61)	> ==================Exit
CMFW(turnOff):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(103)	> Enter=================
Selected interface 'p2p-wlan0-0'
OK
stopped
CMFW(turnOff):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(108)	> Wifi direct turned off
CMFW(turnOff):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(113)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(97)	> Control Port: Waiting to listen message
CMFW(readFromSocket):/home/redcarrottt/ant/framework/communication/src/CommRawPacket.cpp(132)	> read socket error: Connection reset by peer
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(102)	> listeningLoop: header is NULL
CMFW(stopListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(59)	> Enter=================
CMFW(stopListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(61)	> ==================Exit
CMFW(closeConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(123)	> Enter=================
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(39)	> Enter=================
CMFW(bindDynamically):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(143)	> Enter=================
CMFW(bindDynamically):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(158)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(64)	> Bound BT socket 8 to BT port 3
CMFW(registerBluetoothService):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(171)	> Enter=================
CMFW(registerBluetoothService):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(246)	> ==================Exit
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(88)	> Bluetooth port listening success
CMFW(openConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(90)	> ==================Exit
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(48)	> Enter=================
CMFW(runListeningThread):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(55)	> ==================Exit
[ERR] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [onCommPortStateChanged():117]:  CommChannel control port closed -> reopenedCMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(74)	> Enter=================
CMFW(acceptConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(95)	> Enter=================

CMFW(closeConnection):/home/redcarrottt/ant/framework/communication/src/BluetoothCommPort.cpp(139)	> ==================Exit
CMFW(listeningLoop):/home/redcarrottt/ant/framework/communication/src/CommPort.cpp(289)	> ==================Exit

Especially, following log is outstanding.

[VERB] APPCORE:/home/redcarrottt/ant/framework/message/src/CommChannel.cpp: [onReceivedControlMessage():302]:  Received control message for CommChannel: on
CMFW(turnOn):/home/redcarrottt/ant/framework/communication/src/DeviceController.cpp(54)	> Enter=================
Selected interface 'wlan0'
OK
/etc/ant/bin/ant_p2p_setup.sh: line 117: /tmp/wifi/wifi-direct/wfd_stat/self: No such file or directory
stopped
cat: /tmp/wifi/wifi-direct/init/self: No such file or directory

/etc/ant/bin/ant_p2p_setup.sh: line 22: [: -eq: unary operator expected
wpa_supplicant v2.6-devel
random: Trying to read entropy from /dev/random
Successfully initialized wpa_supplicant
Initializing interface 'wlan0' conf '/etc/ant/config/p2p.conf' driver 'nl80211' ctrl_interface 'N/A' bridge 'N/A'

I will handle this bug.

Replace with OpenCV library

Currently, ANT uses modified OpenCV library for face detection.
However, as the ML framework was developed, I thought that it would be appropriate for face detection to be included in the ML framework.
There are some advantages.

Advantages

  • 'gitmodule' run time is reduced.
  • Execution time of intall-deps-*.sh is significantly reduced. (Because building OpenCV takes a considerable amount of time.) #7
  • The dependencies between OpenCV library and ANT can be solved.

Plan

  • Replace building the modified OpenCV with the OpenCV package installation
  • Add face detection to the ML framework

ODROID XU4 Support

I plan to work with the ANT framework to support ODROID XU4.

To Do

  • Add target information
    • GStreamer Pipeline configuration
    • Pre-requisite installation script
  • Verify that the function is working properly

libuv Version Issue

This issue is related to #71.

ANT uses libuv v1.7.5.
However, Node.js requires the latest libuv.
Because older versions do not support some functions. (e.g., uv_os_getpid())

Refine sample applications

We made many changes on ANT API. For example, I changed App API and added Machine Learning API. @LeeHayun deprecated Face Detection API.

Therefore, we need to refine ANT sample applications in apps/sample directory.

Both apps use obsolete App API still. SmartBB app uses Face Detection API that has already deprecated.

I will update App API calls that are used in the sample apps.

Then, how about SmartBB app?

As I think, deprecating SmartBB app and making a new machine learning app would be good.

Sparse Matrix File Format

Currently, files in the MTX file format can be read in sparse matrix format.
However, to provide real machine learning inference, you must provide an API that supports various file formats.

Install script unification

In our project, there is target/ directory and install-deps script for each target.
(install-deps-tegraTX1.sh, install-deps-raspberry-pi2_3.sh)
In many open source projects, they use one script file and use argument to support several target platforms.
Therefore, i propose make the install-deps script one using argument with the target name.

Our install.sh script is already done with the argument of target board name.
(./install.sh --target=raspberry_pi2_3)
Which do you think it's better? unify the install-deps.sh script or leave it as it is now?

Upgrade the Node.js Version

In ANT, we use Node.js 4.x as javascript runtime.
However, Node.js 4.x LTS Argon is no longer actively supported!

Currently, Node.js 8 LTS is recommended.
Therefore, we need to increase the version of Node.js used in ANT to 8.

For more information about release of Node.js, check the link below.
https://github.com/nodejs/Release

ML Daemon runtime improvement

Hi.

ANT has been using Caffe as the runtime of the ML daemon.
However, the libraries used by Caffe are not optimized for ARM devices, making it difficult to achieve good performance.
In order to achieve good ML performance in IoT devices, it is first necessary to use a good baseline library.

One "require" to use ANT API

Problem: libant-message needs unified API binary file

Currently, ANT app should execute separated require() calls to use ANT API.

  • Example) ANT app that uses both App API and Camera API
var appApi = require(process.env.OPEL_BIN_DIR + '/api/app-api');
var cameraApi = require(process.env.OPEL_BIN_DIR + '/api/camera-api');

It is because each API is implemented separately. Each API is implemented as a separated binary.

On the other hand, as libant-message library is introduced for IPC, message handling is handled by the libant-message.

Since libant-message spawns its own message listening thread, separated binary makes duplicated message listening thread.

Therefore, API-related binary (that utilizes libant-message) need to be unified to single binary as following example.

Proposal: Unified API binary file & single require() call

As machine learning API will be implemented with the library, require call also should be unified to single call.

  • Example) ANT app that uses both App API, Camera API and Machine Learning API
var antAPI = require(process.env.OPEL_BIN_DIR + '/api/ant-api');
var appAPI = new antAPI.app();
var cameraAPI = new antAPI.camera();
var mlAPI = new antAPI.ml();

SpMV, SpMM optimization - Loop unrolling

SpMV, SpMM kernel code is fixed with the best performance loop unrolling factor.
However, in the deep learning model, fixed values can not be used because the matrix size varies.
So i have to modify your code so that it can handle the residual value to make it all possible.

Open Source License Issue

Related to PR #24 , there was a discussion about the License of Open Source.
In the process of writing Travis script, i used some python scripts from Samsung/iotjs project.

In a general view, now we are using many 3rd party libraries, and
there will be many cases using other project's source code. (which allows its use)

Therefore, i think we need to discuss about the use of Open source and libraries, and
the mention of Licenses which they have.

Let's discuss about the way we mention the License of 3rd party libraries and Open Source Projects.
(Now, in case of #24 , when i use the python code of Samsung/iotjs, i added some comment to our License file)

Use of Internal Bluetooth on Raspberry Pi 3

Now, de facto standard target device of ANT is Raspberry Pi3 and Tegra TX2.
And when we are testing on the raspberry pi3, we had some issue with the bluetooth device.
RPI3 has internal bluetooth module and it would be disabled when used with the external BT module.
This problem is general around several other projects (such as ardupilot with Navio2)
We are on testing continuously, and we will make an announcement or manual soon for RPI3 bluetooth.

Anyway, now i recommend not to use external bluetooth dongle when using RPI3.
If you have another problem, please report here. Thanks.

Model Converter for ACL

Currently available deep learning frameworks are typically tensorflow, caffe, pytorch, and the like.
Using these frameworks, training a deep neural network creates a model file of each.
For example, tensorflow is a ckpt file and caffe is a caffemodel file.
To use get_weight_accessor, which is now provided in the ACL, you need to change the files like ckpt, caffemodel to npy file.

Therefore, the model converter function should be provided.

ANT's own Docker Image

I felt the necessity of our own Docker Image when i made Travis CI test system.
Now in our Travis CI system, we are using sedeen/rpi-raspbian-qemu docker image.

However, there's problem with our current Travis system.
Travis usually provides total maximum 50 minutes for testing, but our system take more than 3 hours to test the whole process.
It's mainly due to building process of OpenCV and Node.js. Of course OpenCV dependency will disappear in #26 .
Nevertheless, we need to diminish the time of testing such as installing libraries, ...
We need to use time in testing the test script of our each framework, not installing libraries.

Therefore, in the long run, we need to create and use our own Docker Image for the target devices.
In addition, currently we are supporting the test environment with the Raspbian, but tegra TX2 is not supported.
We need to use our own Docker images for target devices.

Plan

  • Create our own docker image (Raspbian on RPI3)
  • Create our own docker image (Ubuntu-tegra on Tegra TX2)

Library linking error when using "cmake -Bbuild -H."

When using "cmake -Bbuild -H." instead of "cmake .", there is a library linking error that cannot find libant-message and libant-cmfw.
I guess that it is because of ambiguous path settings in CMakeLists.txt of app-api.

redcarrottt@tegra-carrot:~/ant-ml$ cmake .
redcarrottt@tegra-carrot:~/ant-ml/build$ make
[  2%] Make out directory
[  2%] Built target out-dir
[  4%] Built target DeviceController
[  6%] Built target TmpControl
[  8%] Built target BluetoothCommPort
[ 11%] Built target WifiDirectCommPort
[ 13%] Built target CommRawPacket
[ 17%] Built target ant-cmfw
[ 37%] Built target ant-message
[ 44%] Built target miniunz
[ 55%] Built target ant-appcore
[ 75%] Built target ant-camera
[ 86%] Built target ant-sensor
[ 86%] Built target nil
[ 88%] Building NIL for App API
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | arm64
gyp info spawn /usr/bin/python2
gyp info spawn args [ '/usr/local/lib/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/redcarrottt/ant-ml/api/app/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/local/lib/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/redcarrottt/.node-gyp/4.0.0/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/redcarrottt/.node-gyp/4.0.0',
gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/redcarrottt/ant-ml/api/app',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info ok
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | arm64
gyp  SOLINK_MODULE(target) Release/obj.target/app-api.node
 info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
/usr/bin/ld: cannot find -lant-cmfw
/usr/bin/ld: cannot find -lant-message
collect2: error: ld returned 1 exit status
app-api.target.mk:138: recipe for target 'Release/obj.target/app-api.node' failed
make[3]: *** [Release/obj.target/app-api.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/node-gyp/lib/build.js:285:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 3.10.96-tegra
gyp ERR! command "/usr/local/bin/node" "/usr/local/bin/node-gyp" "build"
gyp ERR! cwd /home/redcarrottt/ant-ml/api/app
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.6.0
gyp ERR! not ok
api/app/CMakeFiles/nil-appsys.dir/build.make:57: recipe for target 'api/app/CMakeFiles/nil-appsys' failed
make[2]: *** [api/app/CMakeFiles/nil-appsys] Error 1
CMakeFiles/Makefile2:736: recipe for target 'api/app/CMakeFiles/nil-appsys.dir/all' failed
make[1]: *** [api/app/CMakeFiles/nil-appsys.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

CMakeList.txt Build Issue

Relative Path Issue

Currently, the CMakeList.txt files are using the relative path to the its own directory.
For example, "../../out/bin"

We need to use the environment variable to represent all the paths in our project.
E.g., ${CMAKE_SOURCE_DIR}/out/

Build Process

Our ANT project does not support the multi-threaded compile. (-j option in make)
We should compile the frameworks step by step without multi-threading option.
It's essential to make it support multi-threaded compile to enhance the compile time.

To-Do

  • Relative Path Issue
  • Build Process

Divide ANT API by JS part and native part

Currently, ANT API is composed of only C++ native code.
Functions in the native code are directly bound to JS function calls.

All the JS API functions should have code for exception handling and argument type checking.
It is because JavaScript is dynamic type language and its functions do not restrict their arguments.

As now, exception handling and argument type checking is implemented in native code.
Implementing those in C++ is very inefficient and not good for code readability.

Accordingly, I propose to divide ANT API by JS part and native part.

  • JS Part: function prototype, exception handling, argument type checking, making JSON string
  • Native Part: dbus IPC, libuv async handling

App Install Tool

In current version of ANT, we cannot install our own applications.

Currently, we can install only applications that are uploaded to our managed market.

Of course, there is another way to install applications manually. (install apps from market and modify the source code on ANT device)

However, this manner is not clear and not good in the long time.

We need app install tool to install our own applications.

As I think, the tool can be implemented as a new menu of ANT manager or shell script.

Stability Issue in WFD Connection

Currently, there is a stability issue in Wi-fi Direct connection between ANT Manager and ANT AppCore Manager.

Connecting Wi-fi Direct once works well.

However, after disconnecting Wi-fi Direct, re-connecting is often not work.

ANT documentation in docs directory

In many open source projects, they are using documentation in the docs/ dir.
I think it's useful to write down some useful notes about our system.
For example, i firstly write down some useful bluetooth command in docs/bluetooth.md
I will attach the PR number later.

Cannot bind Wi-fi direct port on Raspbian stretch

After building the stretch version, I found an error in this environment.
Below is the log of an ANT manager's camera viewer app.
Camera viewer app did not work properly.

[SystemServer] args: Namespace(debugappcore=False, debugapps=False)
[SystemServer] Initializing ANT daemons...
ipcrm: invalid key (9447)
ipcrm: invalid key (5315)
ipcrm: invalid key (4941)
ipcrm: invalid key (49411)
ipcrm: invalid key (49441)
ipcrm: invalid key (4944)
ipcrm: invalid key (9948)
[SystemServer] App-core Framework Daemon process is executed (pid 6277)
[SystemServer] Camera Framework Daemon process is executed (pid 6278)
[SystemServer] Sensor Framework Daemon process is executed (pid 6279)
Cannot read the sensor configuration file[SystemServer] An ANT process (pid 6279) is dead.
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraManager.cpp: [main():154]:  ANT Camera Manager Start!
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraManager.cpp: [start():56]:  Camera Config file path : /etc/ant/config/camera-config.json
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [initializeDirs():63]:  UserAppsDir=/etc/ant/apps/user
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [initializeDirs():71]:  SystemAppsDir=/etc/ant/apps/system
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [initializeDirs():76]:  AppListDB=/etc/ant/apps/AppListDB.sqlite
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [initializeDirs():93]:  DataDir=/etc/ant/data
[WARN] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [initializeDirs():109]:  Cannot read ANT_TEMP_DIR, so ANT_TEMP_DIR is set as /etc/ant/data/temp
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [initializeDirs():119]:  TempDir=/etc/ant/data/temp
[VERB] APPCORE:/home/pi/ANT/framework/message/src/DbusChannel.cpp: [initializeDbus():42]:  DbusChannel: Start dbus initializing
[VERB] APPCORE:/home/pi/ANT/framework/message/src/DbusChannel.cpp: [initializeDbus():64]:  We now own the name org.ant.dbuschannel!
[VERB] APPCORE:/home/pi/ANT/framework/message/src/DbusChannel.cpp: [listeningLoop():142]:  DbusChannel's Listening Loop: Start dbus-enabled glib main loop
[VERB] APPCORE:/home/pi/ANT/framework/message/src/DbusChannel.cpp: [listeningLoop():151]:  Dbus response ready
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [addRoutingEntry():32]:  Entry (/thing/apps -> DbusChannel) is added to MessageRouterTable
CMFW(turnOn):/home/pi/ANT/framework/communication/src/DeviceController.cpp(36)  > Enter=================
CMFW(turnOn):/home/pi/ANT/framework/communication/src/DeviceController.cpp(39)  > ==================Exit
[VERB] APPCORE:/home/pi/ANT/framework/message/src/CommChannel.cpp: [start():128]:  Start CommChannel
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(39) > Enter=================
CMFW(bindDynamically):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(143)       > Enter=================
CMFW(bindDynamically):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(158)       > ==================Exit
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(64) > Bound BT socket 6 to BT port 1
CMFW(registerBluetoothService):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(171)      > Enter=================
CMFW(registerBluetoothService):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(246)      > ==================Exit
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(88) > Bluetooth port listening success
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(90) > ==================Exit
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(39) > Enter=================
CMFW(bindDynamically):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(143)       > Enter=================
CMFW(bindDynamically):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(158)       > ==================Exit
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(64) > Bound BT socket 8 to BT port 2
CMFW(registerBluetoothService):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(171)      > Enter=================
CMFW(registerBluetoothService):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(246)      > ==================Exit
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(88) > Bluetooth port listening success
CMFW(openConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(90) > ==================Exit
CMFW(runListeningThread):/home/pi/ANT/framework/communication/src/CommPort.cpp(48)      > Enter=================
CMFW(runListeningThread):/home/pi/ANT/framework/communication/src/CommPort.cpp(55)      > ==================Exit
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(74)   > Enter=================
CMFW(acceptConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(95)       > Enter=================
CMFW(runListeningThread):/home/pi/ANT/framework/communication/src/CommPort.cpp(48)      > Enter=================
CMFW(runListeningThread):/home/pi/ANT/framework/communication/src/CommPort.cpp(55)      > ==================Exit
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(74)   > Enter=================
CMFW(acceptConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(95)       > Enter=================
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [addRoutingEntry():32]:  Entry (/comp0 -> CommChannel) is added to MessageRouterTable
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [addRoutingEntry():32]:  Entry (/thing/appcore -> LocalChannel) is added to MessageRouterTable
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():75]:  Number of camera = 1
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():76]:  Recording = queue ! h264parse ! mp4mux ! filesink name=sink_%u sync=f
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():77]:  Snapshot = queue ! jpegenc ! image/jpeg,width=1280,height=720,framerate=1/1 ! appsink name=sink_%u
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():78]:  Streaming = queue ! h264parse ! rtph264pay pt=96 config-interval=1 ! gdppay ! tcpserversink name=sink_%u sync=f
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():79]:  Pre-Recording Init = queue min-threshold-time=10000000000 max-size-buffers=0 max-size-time=0 max-size-bytes=0 ! valve drop=true ! tee name=sink_%u
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():80]:  Pre-Recording = queue ! h264parse ! mp4mux ! filesink name=sink_%u sync=f
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [readyCameraConfig():81]:  OpenCV = queue ! video/x-raw,width=1280,height=720,framerate=30/1,format=I420 ! videoconvert ! video/x-raw,format=BGRx,width=640,height=480 ! appsink name=sink_%u
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraManager.cpp: [start():79]:  Camera device initialization (0)
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraConfigParser.cpp: [getMainBinById():93]:  main_0 = rpicamsrc ! video/x-raw,width=1280,height=720,framerate=30/1,format=I420 ! tee name=RAW_TEE ! video/x-raw,width=1280,height=720,framerate=30/1,format=I420 ! queue ! tee name=MAIN_TEE ! video/x-raw,width=1280,height=720,framerate=30/1,format=I420 ! queue ! omxh264enc ! tee name=H264_TEE ! queue ! fakesink
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  capsfilter2
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  capsfilter1
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  capsfilter0
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  fakesink0
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  queue2
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  H264_TEE
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():57]:  Main 0 bin has h264 tee
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  omxh264enc-omxh264enc0
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  queue1
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  MAIN_TEE
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():53]:  Main 0 bin has main tee
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  queue0
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  RAW_TEE
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():49]:  Main 0 bin has raw tee
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraDevice.cpp: [CameraDevice():46]:  rpicamsrc0
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraCommunicator.cpp: [initCommunication():33]:  D-Bus initialization
[LOG] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraManager.cpp: [msg_dbus_filter():175]:  D-Bus message received
[WARN] CAMERA FW:/home/pi/ANT/framework/camera/src/CameraManager.cpp: [msg_dbus_filter():207]:  Receive unidentified D-bus message
CMFW(acceptConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(115)      > Bluetooth port accepted
CMFW(acceptConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(118)      > ==================Exit
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Default Port: Waiting to listen message
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=1 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 1
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(123)  > Read complete: message metadata
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Default Port: Waiting to listen message
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=1 / flag=96 / payloadSize=119 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 2
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(160)  > Read complete: message data
[VERB] APPCORE:/home/pi/ANT/framework/message/src/CommChannel.cpp: [onReceivedRawMessage():273]:  Received raw message from CommChannel: {"messageId":"0","uri":"/thing/appcore","type":"10","isFileAttached":"0","payload":{"commandType":"1","payload":null}} /
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=6277) Route to /thing/appcore(LocalChannel), {
        "messageId":    "0",
        "uri":  "/thing/appcore",
        "type": "10",
        "isFileAttached":       "0",
        "payload":      {
                "commandType":  "1",
                "payload":      null
        }
}
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Default Port: Waiting to listen message
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [onReceivedMessage():194]:  AppCore command: GetAppList (1)
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=6277) Route to /comp0(CommChannel), {
        "messageId":    "0",
        "uri":  "/comp0",
        "type": "11",
        "isFileAttached":       "0",
        "payload":      {
                "commandMessageId":     "0",
                "commandType":  "1",
                "payload":      {
                        "appList":      [{
                                        "appId":        "0",
                                        "appName":      "CameraViewer",
                                        "isDefaultApp": "1"
                                }, {
                                        "appId":        "1",
                                        "appName":      "SensorViewer",
                                        "isDefaultApp": "1"
                                }]
                }
        }
}
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(307) > Enter=================
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(319) > Send message metadata (1)
CMFW(toByteArray):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(174)       > write header: id=1 / flag=16 / payloadSize=8 / currOffset=0
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(338) > Send message data (1)
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(368) > sendRawMessage(message): mPayloadSize = 349
CMFW(toByteArray):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(174)       > write header: id=1 / flag=96 / payloadSize=349 / currOffset=0
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(480) > Send message done (1)
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(481) > ==================Exit
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=2 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 1
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(123)  > Read complete: message metadata
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Default Port: Waiting to listen message
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=2 / flag=96 / payloadSize=129 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 2
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(160)  > Read complete: message data
[VERB] APPCORE:/home/pi/ANT/framework/message/src/CommChannel.cpp: [onReceivedRawMessage():273]:  Received raw message from CommChannel: {"messageId":"1","uri":"/thing/appcore","type":"10","isFileAttached":"0","payload":{"commandType":"12","payload":{"appId":"0"}}} /
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=6277) Route to /thing/appcore(LocalChannel), {
        "messageId":    "1",
        "uri":  "/thing/appcore",
        "type": "10",
        "isFileAttached":       "0",
        "payload":      {
                "commandType":  "12",
                "payload":      {
                        "appId":        "0"
                }
        }
}
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Default Port: Waiting to listen message
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=3 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 1
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(123)  > Read complete: message metadata
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Default Port: Waiting to listen message
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [onReceivedMessage():238]:  AppCore command: GetAppIcon (12)
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=6277) Route to /comp0(CommChannel), {
        "messageId":    "1",
        "uri":  "/comp0",
        "type": "11",
        "isFileAttached":       "0",
        "payload":      {
                "commandMessageId":     "1",
                "commandType":  "12"
        }
}
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=3 / flag=96 / payloadSize=129 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 2
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(160)  > Read complete: message data
[VERB] APPCORE:/home/pi/ANT/framework/message/src/CommChannel.cpp: [onReceivedRawMessage():273]:  Received raw message from CommChannel: {"messageId":"2","uri":"/thing/appcore","type":"10","isFileAttached":"0","payload":{"commandType":"12","payload":{"appId":"1"}}} /
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=6277) Route to /thing/appcore(LocalChannel), {
        "messageId":    "2",
        "uri":  "/thing/appcore",
        "type": "10",
        "isFileAttached":       "0",
        "payload":      {
                "commandType":  "12",
                "payload":      {
                        "appId":        "1"
                }
        }
}
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(307) > CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97) > Default Port: Waiting to listen message
Enter=================
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(319) > Send message metadata (2)
CMFW(toByteArray):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(174)       > write header: id=2 / flag=16 / payloadSize=8 / currOffset=0
[VERB] APPCORE:/home/pi/ANT/framework/appcore/src/AppCore.cpp: [onReceivedMessage():238]:  CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(338)      > Send message data (2)
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(368) > sendRawMessage(message): mPayloadSize = 145
CMFW(toByteArray):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(174)       > write header: id=2 / flag=96 / payloadSize=145 / currOffset=0AppCore command: GetAppIcon (12)

CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(480) > Send message done (2)
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(481) > ==================Exit
[VERB] APPCORE:/home/pi/ANT/framework/message/src/MessageRouter.cpp: [routeMessage():91]:  (pid=6277) Route to /comp0(CommChannel), {
        "messageId":    "2",
        "uri":  "/comp0",
        "type": "11",
        "isFileAttached":       "0",
        "payload":      {
                "commandMessageId":     "2",
                "commandType":  "12"
        }
}
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(307) > Enter=================
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(319) > Send message metadata (3)
CMFW(toByteArray):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(174)       > write header: id=3 / flag=16 / payloadSize=8 / currOffset=0
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(338) > Send message data (3)
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(368) > sendRawMessage(message): mPayloadSize = 145
CMFW(toByteArray):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(174)       > write header: id=3 / flag=96 / payloadSize=145 / currOffset=0
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(480) > Send message done (3)
CMFW(sendRawMessage):/home/pi/ANT/framework/communication/src/CommPort.cpp(481) > ==================Exit
CMFW(acceptConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(115)      > Bluetooth port accepted
CMFW(acceptConnection):/home/pi/ANT/framework/communication/src/BluetoothCommPort.cpp(118)      > ==================Exit
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Control Port: Waiting to listen message
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=1 / flag=16 / payloadSize=8 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 1
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(123)  > Read complete: message metadata
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Control Port: Waiting to listen message
CMFW(readFromSocket):/home/pi/ANT/framework/communication/src/CommRawPacket.cpp(137)    > read header: id=1 / flag=96 / payloadSize=3 / currOffset=0
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(104)  > Expected type: 2
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(160)  > Read complete: message data
[VERB] APPCORE:/home/pi/ANT/framework/message/src/CommChannel.cpp: [onReceivedControlMessage():302]:  Received control message for CommChannel: on
CMFW(turnOn):/home/pi/ANT/framework/communication/src/DeviceController.cpp(54)  > Enter=================
Selected interface 'p2p-dev-wlan0'
OK
stopped
1
started
CMFW(turnOn):/home/pi/ANT/framework/communication/src/DeviceController.cpp(89)  > P2p start!
CMFW(turnOn):/home/pi/ANT/framework/communication/src/DeviceController.cpp(96)  > Wifi direct turned on
CMFW(turnOn):/home/pi/ANT/framework/communication/src/DeviceController.cpp(98)  > ==================Exit
CMFW(openConnection):/home/pi/ANT/framework/communication/src/WifiDirectCommPort.cpp(36)        > Enter=================
CMFW(openConnection):/home/pi/ANT/framework/communication/src/WifiDirectCommPort.cpp(70)        > Wifi direct port open error: bind fail (Cannot assign requested address)
CMFW(openConnection):/home/pi/ANT/framework/communication/src/WifiDirectCommPort.cpp(71)        > ==================Exit
[ERR] APPCORE:/home/pi/ANT/framework/message/src/CommChannel.cpp: [enableLargeDataMode():177]:  CommChannel enableLargeData: opening largedata port fail
CMFW(listeningLoop):/home/pi/ANT/framework/communication/src/CommPort.cpp(97)   > Control Port: Waiting to listen message

Using ACL for deep learning inference (SpMM)

In the ACL, the input matrix appears in two forms: NCHW or NHWC.
The algorithm we are currently using transposes the input matrix to the column major and proceeds to SpMM.
If you try to use this algorithm by porting to an ACL and you do not provide a matrix transpose in your ACL, you need transpose code.

Odroid USB Camera 720P generates a bug in the GStreamer pipeline.

Hi.

Previously I used ODroid USB Camera 720P in ODROID XU4.
This camera looks like this:
image

However, using ANT with this camera will cause problems when generating the GStreamer pipeline on the smartphone side.
Below is the logs of Pixel 1 from Android Studio.

2018-11-29 20:31:24.336 28881-28939/com.ant.ant_manager W/GStreamer+gdpdepay: 0:00:03.488077604 0xc1aea6c0 gstgdpdepay.c:565:gst_gdp_depay_decide_allocation:<gdpdepay0> Peer allocation query failed.
2018-11-29 20:31:24.345 28881-28939/com.ant.ant_manager W/GStreamer+gdpdepay: 0:00:03.497453125 0xc1aea6c0 gstgdpdepay.c:565:gst_gdp_depay_decide_allocation:<gdpdepay0> Peer allocation query failed.
2018-11-29 20:31:24.346 28881-28939/com.ant.ant_manager W/GStreamer+GST_PADS: 0:00:03.498171354 0xc1aea6c0 gstpad.c:4109:gst_pad_peer_query:<gdpdepay0:src> could not send sticky events
2018-11-29 20:31:24.346 28881-28939/com.ant.ant_manager W/GStreamer+gdpdepay: 0:00:03.498267708 0xc1aea6c0 gstgdpdepay.c:565:gst_gdp_depay_decide_allocation:<gdpdepay0> Peer allocation query failed.
2018-11-29 20:31:24.346 28881-28939/com.ant.ant_manager W/GStreamer+gdpdepay: 0:00:03.498383854 0xc1aea6c0 gstgdpdepay.c:503:gst_gdp_depay_chain:<gdpdepay0> pushing depayloaded buffer returned -4
2018-11-29 20:31:24.415 28881-28940/com.ant.ant_manager W/GStreamer+basesrc: 0:00:03.566867187 0xc1aea6f0 gstbasesrc.c:2950:gst_base_src_loop:<tcpclientsrc0> error: Internal data stream error.
2018-11-29 20:31:24.415 28881-28940/com.ant.ant_manager W/GStreamer+basesrc: 0:00:03.567190104 0xc1aea6f0 gstbasesrc.c:2950:gst_base_src_loop:<tcpclientsrc0> error: streaming stopped, reason not-negotiated (-4)
2018-11-29 20:31:24.416 28881-28940/com.ant.ant_manager W/GStreamer+queue: 0:00:03.568547916 0xc1aea6f0 gstqueue.c:989:gst_queue_handle_sink_event:<queue0> error: Internal data stream error.
2018-11-29 20:31:24.417 28881-28940/com.ant.ant_manager W/GStreamer+queue: 0:00:03.568644271 0xc1aea6f0 gstqueue.c:989:gst_queue_handle_sink_event:<queue0> error: streaming stopped, reason not-negotiated (-4)
2018-11-29 20:31:24.417 28881-28936/com.ant.ant_manager D/GStreamer+camera-viewer: 0:00:03.568734375 0xc028d320 /home/hayun/jni/camera-viewer.c:107:set_ui_message Setting message to: Error received from element tcpclientsrc0: Internal data stream error.

Server-side example code for Google Cloud

Refering to PR #82, Google Cloud Plug-in is applied to ANT framework.

Google Cloud Plug-in does only data transfer via MQTT Pub/Sub.

However, there are many applications based on Google Cloud, such as sensor database or machine learning.

Although making those cloud application is a job of application developers, it is good to propose basic cloud application example.

For example, following example code can be made.

  • Store sensor data (reported from ANT device) to database on Google Cloud
  • Execute machine learning models, of which input data is reported from ANT device

Cloud API and Google Cloud Plug-in Proposal

I propose Cloud API and Google Cloud Plug-in.

Cloud API covers basic function calls for MQTT Pub/Sub.

Google Cloud Plug-in covers authentication on connection time and name convention handling in MQTT token, subscription, or project name.

Those new modules can be used for connecting ANT sensor framework or inference framework to Google Cloud.

Sensor data or video frame from ANT device can be stored to Google Cloud's "Cloud BigTable" or used to analysis using "Cloud ML".

To-do

  • Skeleton for Cloud API
  • Cloud API
  • Google Cloud Plug-in
    • Token refresh
    • Reset callbacks on token refresh
  • Test

Problem on Wi-fi Direct Discovery Policy

Currently, when ANT manager app tries to turn on large data mode, it discovers a Wi-fi Direct peer which name is "ANT".

This "name-based discovery" can make a trouble when multiple ANT devices are active nearby. ANT manager app can be confused to select which peer to choose.

Therefore, it should be changed to "MAC address-based discovery".

Proposal: MAC Address-based Discovery

  1. ANT manager app tries to turn on large data mode (send "on" command to ANT device through control port)
  2. CommChannel on ANT device receives "on" command
  3. CommChannel on ANT device send 3 parameters to ANT manager app; "Wi-fi Direct Name", "Wi-fi Direct host IP address(commonly, 192.168.49.1)" and "Wi-fi Direct MAC Address".
    • Previously, it sent only 2 parameters; "Wi-fi Direct Name" and "Wi-fi Direct host IP address".
  4. ANT manager app receives those parameters
  5. ANT manager app starts to discover Wi-fi Direct P2P peers.
  6. When P2P peer list is given, ANT manager app finds a peer device, which of MAC address is same as given MAC address through control port.
  7. ANT manager app establishes a connection to the peer device.

SpMM optimization - execution time

ACL_GEMM (1024 x 1024) execution time : 10ms
CSR_FLEX_GEMM (1024 x 1024) execution time : 60ms (best performance)

The difference between these two performances seems to be the tiling optimization technique.
ย 
To get better performance than ACL_GEMM, consider about tile-based SpMM or use other sparse format.

Integrate android branch into master branch

ANT project is managed in two branches; master and android.

In android branch, there is source code of ANT manager running on companion devices(Android smartphones).
In master branch, there is source cod of ANT framework running on IoT devices.

Since this project is managed in separated branch, matching binary versions on each devices is tricky.

Therefore, I propose integrating android branch into master branch.

Source code inside of android branch can be relocated to android directory in master branch.

Unified Logging System

We are using independent logging system for each framework.
However, to easily use the framework with the proper logging, it's necessary to unify our logging system.
I propose to use google's logging system 'glog' (https://github.com/google/glog)

It provides log level and several mode.
How do you think about that?

Error Handling in each framework

Now, our framework is a little fragile.
Our framework daemons could die when there were some exceptional stuffs.
We should make it resilient to make our framework sturdy.
For this, we should write some error handling code in our frameworks.
Except the fatal case that must be handled, we should have alternatives for the exceptional case.

For example, in sensor manager,
i'm devising to make virtual sensor driver to make SENSOR daemon alive without real sensor driver.
Now, SENSOR daemon dies when there is no sensor driver file.

SDP session registration error

I tested ANT framework on Raspberry Pi3 - Stretch (dist).
After install ANT into system successfully, it could make error related to SDP session registration.

I'm not sure what causes this error, but after i reboot, it works well.
As soon as i figured it out, i will debug the error.
Until then, please reboot when you meet the error below.

image

Move nan package install to npm description file

Most of ANT APIs require nan package to support native code in ANT API.

Although nan package is dependent on only ANT APIs, command to install nan package is included in target/{board_name}/install-deps-{board_name}.sh.

I propose to move npm package install command to "app/package.json".

Resolve degradation in git clone speed

After I made a PR #69, git clone's speed is degraded.

It's reason may be that I included workloads for experiments in selective connection subproject to git commit history.

Therefore, I excluded the workloads with hundreds megabytes of files.

After that, the git clone's speed is recovered.

Significant accuracy loss when pruning (structured sparsity)

I'm now trying to pruning for sparse operations with even sparsity among groups, considering load-balancing.

However, simply correcting the number after pruning looks seriously damage the accuracy.

Therefore, a new approach seems necessary.

Multi GPU training with PyTorch

I have trouble trying to train AlexNet using Pytorch.

Using single GPU doesn't cause any problems, but using multi GPU doesn't work with the following warning message.

/home/khs/anaconda2/lib/python2.7/site-packages/torch/nn/parallel/data_parallel.py:24: UserWarning:
There is an imbalance between your GPUs. You may want to exclude GPU 2 which
has less than 75% of the memory or cores of GPU 0. You can do so by setting
the device_ids argument to DataParallel, or by setting the CUDA_VISIBLE_DEVICES
environment variable.
warnings.warn(imbalance_warn.format(device_ids[min_pos], device_ids[max_pos]))

API Documentation Update Required

We've made or updated many APIs in ANT framework 2.0.
However, ANT Project's Wiki page is not updated yet.

To-do

  • Machine Learning API (updated for DNN/CNN's InferenceOption)
  • Remote UI API
  • Cloud API
  • Sensor Database API (New)

ML plugin proposal

Hi.

Currently, the camera framework and the ML framework are separate.
However, it is not natural. (Because doing ML can be considered as some work on the pipeline)
I propose to develop an ML plugin that can be added to the pipeline managed by the camera framework.

This idea is referenced in the following paper:

EdgeEye: An Edge Service Framework for Real-time Intelligent Video Analytics (EdgeSys'18)

Test Mode of Machine Learning Daemon

I've made test mode of machine learning daemon, as shown in PR #30.
You can use test mode of machine learning framework with following commands.

  • Test Image Classifier (Camera + CNN)
    • sudo /etc/ant/bin/ant-ml --test-image
  • Test Motion Classifier (Accelerometer + ANN)
    • sudo /etc/ant/bin/ant-ml --test-motion

The test mode can run solely, without any ANT app or daemon.

About community guidelines

It seems that our community is not well managed. So I want to make the guidelines for community management. Formally create guidelines through the issue and manage to follow them. If you have comments on the guidelines, please comment.

The examples of the guideline is as follows.

  • Before developing each major version, summarize the functions to be developed and upload them as drafts.
  • When the draft is complete, register the summary as a new issue.

Since it is still a simple guideline, it may be lacking in content or the sentence may be ambiguous. If you want to modify or add guidelines, please feel free to comment.

Reduce the execution time of install-deps-*.sh

Currently, install-deps-*.sh spends several hours of execution time.

This script builds all the dependent projects such as bluez, libuv and nodejs.

We don't need to build those projects every time.

There are several options on solution.

  • Adding install-prebuilt-deps-*.sh scripts that download and install pre-built projects
  • Replacing dependent projects with mainline packages(packages that can be downloaded by apt-get)

ODROID XU4 doesn't support H.264 codec

Hi.

I had a problem porting to ODROID XU4.
ODROID XU4 does not have OMX plugin installed and avenc_h264 plugin does not work properly.
Currently, I used MPEG4 code for running ANT in ODROID XU4.

SpMV optimization - reduce memory access ( SIMD-aware pruning)

When CSR-SpMV was 25%, it showed similar performance as ACL-GEMV.
As a result of the provisioning, the biggest cause of performance was global memory access.
Therefore, it is effective to reduce the cache miss through regular access to the input vector and to use the SIMD-ware pruning method for reducing memory access due to CSR format characteristics.

While these problems can be solved, SIMD-aware pruning is damaging to accuracy because the pruning area is re-structible.

Discussion

  • Flex SIMD-aware pruning is proposed to complement this.
  • Or Tile(4x4) based pruning

Add RSA Key Management API to Cloud APIs

Most of cloud services require authentication process using RSA keys.

As now, you should make your own RSA key on command line before using Cloud API.

Since it is cumbersome process, it is good to add RSA key management API to Cloud API.

It makes app developers free from RSA management commands.

NPM Packaging

Currently, each ANT API is pacakaged with node-gyp tool.

As ANT API grows, packaging all the ANT API as a single package is required.

I propose packaging all the ANT APIs with a single package.

Remote UI Example Required

Recently, we've developed Remote UI API.

In order that developers utilize the Remote UI API easily, we have to make example code for Remote UI API.

I think that updating our existing sample application, MachineLearning and QuickCam.

SpMV optimization ( sparse matrix - dense vector multiplication) - execution time

When the sparsity is 25%, the csr-SpMV shows the same performance as the ACL-GEMV.
It is reasonable performance?
Reason :

  • The most important factor that affects performance in the SpMV is the number of global memory accesses. When sparsity(number of non-zeros) goes up, the number of global memory access is increased numerously.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.